pool.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package redis
  2. import (
  3. "time"
  4. "bet24.com/log"
  5. "github.com/gomodule/redigo/redis"
  6. )
  7. var (
  8. // 定义常量
  9. RedisClient *redis.Pool
  10. REDIS_HOST string
  11. REDIS_PASSWORD string
  12. REDIS_DB int
  13. )
  14. func InitPool(serverUrl, password string, db int) {
  15. if RedisClient != nil {
  16. log.Release("redis.InitPool already inited")
  17. return
  18. }
  19. log.Release("redis.InitPool %v,%v,%d", serverUrl, password, db)
  20. REDIS_HOST = serverUrl
  21. REDIS_DB = db
  22. REDIS_PASSWORD = password
  23. // 建立连接池
  24. RedisClient = &redis.Pool{
  25. // 从配置文件获取maxidle以及maxactive,取不到则用后面的默认值
  26. MaxIdle: 3,
  27. MaxActive: 1000,
  28. Wait: false,
  29. IdleTimeout: 300 * time.Second,
  30. Dial: func() (redis.Conn, error) {
  31. c, err := redis.Dial("tcp", REDIS_HOST)
  32. if err != nil {
  33. log.Release("redis.Dial failed %v", err)
  34. return nil, err
  35. }
  36. if len(REDIS_PASSWORD) > 0 {
  37. if _, err := c.Do("AUTH", REDIS_PASSWORD); err != nil {
  38. c.Close()
  39. log.Release("connect redis invalid password")
  40. return nil, err
  41. }
  42. }
  43. // 选择db
  44. if REDIS_DB > 0 {
  45. c.Do("SELECT", REDIS_DB)
  46. }
  47. return c, nil
  48. },
  49. }
  50. }