dtm icon indicating copy to clipboard operation
dtm copied to clipboard

Redis存储引擎问题

Open leitiannet opened this issue 3 years ago • 2 comments

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

leitiannet avatar Mar 31 '22 13:03 leitiannet

目前主流的都是采用云上的redis,例如阿里云腾讯云,这些云厂商都提供的服务可以用newclient直接用。 你这边是自己搭建集群,那么建议你先找一找集群使用代理的方案

yedf2 avatar Mar 31 '22 14:03 yedf2