Get All keys From redis in go

14,761

Solution 1

Use the Strings function to convert the result to a slice of strings:

keys, err := redis.Strings(cn.Do("KEYS", "*"))
if err != nil {
    // handle error
}
for _, key := range keys {
   fmt.Println(key)
}

Solution 2

Since Redis only has one thread, the KEYS command will block all other requests until it has finished, so it's not a good approach for production. Instead, use SCAN. see SCAN documentation here

Share:
14,761
Vinay Sawant
Author by

Vinay Sawant

Updated on July 02, 2022

Comments

  • Vinay Sawant
    Vinay Sawant almost 2 years

    How to get all keys of Redis in db and store it in list or array in golang using redigo?

    redisPool := redis.NewPool(func() (redis.Conn, error) {
        con, err := redis.Dial("tcp", *redisAddress)
        con.Do("SELECT", 0)
        if err != nil {
            return nil, err
        }
        return con, err
    }, *maxConnections)
    fmt.Println("Redis Connection Established...!")
    con := redisPool.Get()
    
    //defer con.Close()
    fmt.Println("Redis Connected...!")
    //var sl []string = make([]string, len, cap)
    var ab interface{}
    ab, errA := con.Do("Keys", "*")
    fmt.Println(ab)
    fmt.Println(errA)