dtm
dtm copied to clipboard
Redis存储引擎问题
dtm支持将数据存储到集群版Redis中,通过指定前缀将所有数据存储到一个slot。但代码中通过redis.NewClient创建Redis客户端实例貌似有问题。
集群版Redis插入测试key 192.168.32.47:7000> set {dtm}_k1 dtm OK 192.168.32.47:7000> get {dtm}_k1 "dtm"
测试代码
package main
import (
"context"
"fmt"
"time"
"github.com/go-redis/redis"
)
var (
ctx = context.Background()
addrs = []string{"192.168.32.45:7000", "192.168.32.46:7000", "192.168.32.47:7000"} // master
key = "{dtm}_k1"
)
func main() {
RunClient()
RunUniversalClient()
}
func RunClient() {
client := redis.NewClient(&redis.Options{
Addr: addrs[0],
})
val, err := client.Get(ctx, key).Result()
if err != nil {
fmt.Printf("Client err:%s\n", err)
} else {
fmt.Printf("Client val:%v\n", val)
}
}
func RunUniversalClient() {
client := redis.NewUniversalClient(&redis.UniversalOptions{
Addrs: addrs,
})
val, err := client.Get(ctx, key).Result()
if err != nil {
fmt.Printf("UniversalClient err:%s\n", err)
} else {
fmt.Printf("UniversalClient val:%v\n", val)
}
}
========output======== Client err:MOVED 15933 192.168.32.47:7000 UniversalClient val:dtm
目前主流的都是采用云上的redis,例如阿里云腾讯云,这些云厂商都提供的服务可以用newclient直接用。 你这边是自己搭建集群,那么建议你先找一找集群使用代理的方案