Мок-сервер кластера 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)
}
}