How to query Redis db from golang using redigo library

Daemon1313 picture Daemon1313 · Oct 13, 2014 · Viewed 10.9k times · Source

I am trying to figure out what is the best way to query Redis db for multiple keys in one command. I have seen MGET which can be used for redis-cli. But how you do that using redigo library from GOlang code. Imagine I have an array of keys and I want to take from Redis db all the values for those keys in one query.

Thanks in advance!

Answer

Bayta Darell picture Bayta Darell · Oct 13, 2014

Assuming that c is a Redigo connection and keys is a []string of your keys:

var args []interface{}
for _, k := range keys {
    args = append(args, k)
}
values, err := redis.Strings(c.Do("MGET", args...))
if err != nil {
    // handle error
}
for _, v := range values {
   fmt.Println(v)
}

The Go FAQ explains why you need to copy the keys. The spec describes how to pass a slice to a variadic param.