client.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package rds
  2. import (
  3. "github.com/go-redis/redis"
  4. "time"
  5. )
  6. const (
  7. TIMEOUT_READ = 3 * time.Second
  8. TIMEOUT_WRITE = 5 * time.Second
  9. TIMEOUT_POOL = 60 * time.Second
  10. SIZE_POOL = 10
  11. )
  12. func Connect(addr, password string, db int) (*redis.Client, error) {
  13. conn := redis.NewClient(&redis.Options{
  14. Addr: addr,
  15. Password: password,
  16. DB: db,
  17. DialTimeout: TIMEOUT_READ,
  18. ReadTimeout: TIMEOUT_READ,
  19. WriteTimeout: TIMEOUT_WRITE,
  20. PoolSize: SIZE_POOL,
  21. PoolTimeout: TIMEOUT_POOL,
  22. })
  23. _, err := conn.Ping().Result()
  24. if nil != err {
  25. return nil, err
  26. }
  27. return conn, nil
  28. }
  29. func ConnectCluster(addrs []string, password string, db int) (*redis.ClusterClient, error) {
  30. conn := redis.NewClusterClient(&redis.ClusterOptions{
  31. Addrs: addrs,
  32. Password: password,
  33. DialTimeout: TIMEOUT_READ,
  34. ReadTimeout: TIMEOUT_READ,
  35. WriteTimeout: TIMEOUT_WRITE,
  36. PoolSize: SIZE_POOL,
  37. PoolTimeout: TIMEOUT_POOL,
  38. })
  39. _, err := conn.Ping().Result()
  40. if nil != err {
  41. return nil, err
  42. }
  43. return conn, nil
  44. }
  45. func ConnectSentinel(addrs []string, master, password string, db int) (*redis.Client, error) {
  46. conn := redis.NewFailoverClient(&redis.FailoverOptions{
  47. MasterName: master,
  48. SentinelAddrs: addrs,
  49. Password: password,
  50. DB: db,
  51. DialTimeout: TIMEOUT_READ,
  52. ReadTimeout: TIMEOUT_READ,
  53. WriteTimeout: TIMEOUT_WRITE,
  54. PoolSize: SIZE_POOL,
  55. PoolTimeout: TIMEOUT_POOL,
  56. })
  57. if _, err := conn.Ping().Result(); err != nil {
  58. return nil, err
  59. }
  60. return conn, nil
  61. }