failover_timer.go 979 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package main
  2. import (
  3. "context"
  4. "flag"
  5. "fmt"
  6. "time"
  7. "github.com/go-redis/redis/v8"
  8. )
  9. var ctx = context.Background()
  10. func main() {
  11. redisHost := flag.String("host", "localhost", "Redis Host")
  12. redisPort := flag.Int("port", 6379, "Redis Port")
  13. redisPassword := flag.String("password", "", "RedisPassword")
  14. messageCount := flag.Int("message_count", 10000, "run this man times")
  15. flag.Parse()
  16. client := redis.NewClusterClient(&redis.ClusterOptions{
  17. Addrs: []string{fmt.Sprintf("%s:%d", *redisHost, *redisPort)},
  18. MaxRedirects: 3,
  19. Password: *redisPassword,
  20. PoolSize: 8,
  21. MinIdleConns: 5,
  22. PoolTimeout: 0,
  23. IdleTimeout: 20 * time.Second,
  24. DialTimeout: 2 * time.Second,
  25. })
  26. client.Ping(ctx)
  27. for i := 0; i < *messageCount; i++ {
  28. misses := client.PoolStats().Misses
  29. _, err := client.Set(ctx, "DTM", "DTM", 0).Result()
  30. if err != nil {
  31. fmt.Println(err)
  32. }
  33. if client.PoolStats().Misses > misses {
  34. fmt.Println("Failover")
  35. }
  36. }
  37. }