0

如何在 Golang 中模拟 redis 集群服务器?

可以使用 'github.com/alicebob/miniredis' 包模拟简单的 redis 服务器,但它不支持集群模拟。

收到以下错误: ERR unknown command 集群, with args beginning with: 槽``

我的程序使用 'github.com/go-redis/redis' 包进行 redis 实现。

例如 - 为以下客户端创建模拟服务器

redisCache := redis.NewClusterClient(redisConfig)
    _, err := redisCache.Ping().Result()
    if err != nil {
        log.Fatalf("fatal error Not able to connect using redis client: %s", err)
    }
4

1 回答 1

0

也许使用“github.com/alicebob/miniredis/v2”而不是“github.com/alicebob/miniredis”可以解决问题。

这是一个例子。

package redis_cluster_test

import (
    "log"
    "testing"
    "time"

    "github.com/alicebob/miniredis/v2"
    "github.com/go-redis/redis"
)

func TestRedisCluster(t *testing.T) {
    mock, err := miniredis.Run()
    if err != nil {
        panic(err)
    }

    redisConfig := redis.ClusterOptions{
        Addrs:        []string{mock.Addr()},
        ReadTimeout:  1 * time.Second,
        WriteTimeout: 1 * time.Second,
        PoolSize:     6500,
        PoolTimeout:  30 * time.Second}

    redisCache := redis.NewClusterClient(&redisConfig)
    _, err = redisCache.Ping().Result()
    if err != nil {
        t.Errorf("fatal error Not able to connect using redis client: %s", err)
        log.Fatalf("fatal error Not able to connect using redis client: %s", err)
    }
}
于 2020-08-27T12:09:44.830 回答