Мок-сервер кластера Redis в Golang

Как издеваться над кластерным сервером Redis в Golang?

Простой сервер Redis можно смоделировать с помощью пакета github.com/alicebob/miniredis, но он не поддерживает имитацию кластера.

Получена следующая ошибка: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)
    }

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)
    }
}
Другие вопросы по тегам