go 操作redis遇到的坑

go操作redis,常用的库为redisgo和go-redis,在github上都有相关的demo code。

但是,相关的demo都不支持redis集群,开始尝试都是会报MOVED的错误,查资料说用MOVED报错后的地址再试一次即可,自己搞了半天发现重试也不行。

又继续查资料,发现go-redis是支持集群的。只要是合理的设置即可。

如下:

var ctx = context.Background()
//关键在于如下的配置
rdb := redis.NewClusterClient(&redis.ClusterOptions{
Addrs: []string{"xxx:xx"},
Password: "xx",
})
err := rdb.Set(ctx, "key", "value test", 0).Err()
if err != nil {
fmt.Println(err)
panic(err)
}
val, err := rdb.Get(ctx, "key").Result()
if err != nil {
panic(err)
}
fmt.Println("key", val)
val2, err := rdb.Get(ctx, "key2").Result()
if err == redis.Nil {
fmt.Println("key2 does not exist")
} else if err != nil {
panic(err)
} else {
fmt.Println("key2", val2)
}
测试可用哦。