client.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  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. type H map[string]string
  13. func Connect(addr, password string, db int) (*redis.Client, error) {
  14. conn := redis.NewClient(&redis.Options{
  15. Addr: addr,
  16. Password: password,
  17. DB: db,
  18. DialTimeout: TIMEOUT_READ,
  19. ReadTimeout: TIMEOUT_READ,
  20. WriteTimeout: TIMEOUT_WRITE,
  21. PoolSize: SIZE_POOL,
  22. PoolTimeout: TIMEOUT_POOL,
  23. })
  24. _, err := conn.Ping().Result()
  25. if nil != err {
  26. return nil, err
  27. }
  28. return conn, nil
  29. }
  30. func ConnectCluster(addrs []string, password string, db int) (*redis.ClusterClient, error) {
  31. conn := redis.NewClusterClient(&redis.ClusterOptions{
  32. Addrs: addrs,
  33. Password: password,
  34. DialTimeout: TIMEOUT_READ,
  35. ReadTimeout: TIMEOUT_READ,
  36. WriteTimeout: TIMEOUT_WRITE,
  37. PoolSize: SIZE_POOL,
  38. PoolTimeout: TIMEOUT_POOL,
  39. })
  40. _, err := conn.Ping().Result()
  41. if nil != err {
  42. return nil, err
  43. }
  44. return conn, nil
  45. }
  46. func ConnectSentinel(addrs []string, master, password string, db int) (*redis.Client, error) {
  47. conn := redis.NewFailoverClient(&redis.FailoverOptions{
  48. MasterName: master,
  49. SentinelAddrs: addrs,
  50. Password: password,
  51. DB: db,
  52. DialTimeout: TIMEOUT_READ,
  53. ReadTimeout: TIMEOUT_READ,
  54. WriteTimeout: TIMEOUT_WRITE,
  55. PoolSize: SIZE_POOL,
  56. PoolTimeout: TIMEOUT_POOL,
  57. })
  58. if _, err := conn.Ping().Result(); err != nil {
  59. return nil, err
  60. }
  61. return conn, nil
  62. }