Search code examples
goredisredigo

How to query Redis db from golang using redigo library


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!


Solution

  • 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.