package main import ( "context" "flag" "fmt" "time" "github.com/go-redis/redis/v8" ) var ctx = context.Background() func main() { redisHost := flag.String("host", "localhost", "Redis Host") redisPort := flag.Int("port", 6379, "Redis Port") redisPassword := flag.String("password", "", "RedisPassword") messageCount := flag.Int("message_count", 10000, "run this man times") flag.Parse() client := redis.NewClusterClient(&redis.ClusterOptions{ Addrs: []string{fmt.Sprintf("%s:%d", *redisHost, *redisPort)}, MaxRedirects: 3, Password: *redisPassword, PoolSize: 8, MinIdleConns: 5, PoolTimeout: 0, IdleTimeout: 20 * time.Second, DialTimeout: 2 * time.Second, }) client.Ping(ctx) for i := 0; i < *messageCount; i++ { start := time.Now() misses := client.PoolStats().Misses _, err := client.Set(ctx, "DTM", "DTM", 0).Result() elapsed := time.Since(start) if err != nil { fmt.Println(err) } if client.PoolStats().Misses > misses { fmt.Printf("Failover: Client took %d ms to complete operation %+v\n", elapsed.Milliseconds(), client.PoolStats()) } } }