【问题标题】:Mock Redis Cluster Server in GolangGolang 中的 Mock Redis 集群服务器
【发布时间】:2020-12-11 15:47:19
【问题描述】:

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

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

收到以下错误: ERR unknown command cluster, with args beginning with: slots``

我的程序使用 '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)
    }

【问题讨论】:

    标签: unit-testing go redis go-redis


    【解决方案1】:

    也许使用“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)
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2016-09-09
      • 2015-05-31
      • 2018-08-06
      • 2020-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-06
      • 2016-04-06
      相关资源
      最近更新 更多