从redis获取所有密钥

Vin*_*ant 3 go redis redigo

如何在db中获取Redis的所有密钥并使用redigo将其存储在golang的列表或数组中?

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)
Run Code Online (Sandbox Code Playgroud)

Cer*_*món 11

使用字符串函数将结果转换为字符串切片:

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


tar*_*raf 6

由于 Redis 只有一个线程,该KEYS命令将阻塞所有其他请求,直到它完成,因此这不是生产的好方法。相反,使用SCAN. 请参阅此处的 SCAN 文档