redis.go 837 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package lib
  2. import (
  3. . "gitdxz.51daxuetong.cn/go_dev/jjl-tools/tinodeService/config"
  4. "sync"
  5. "github.com/go-redis/redis"
  6. )
  7. type Redis struct{}
  8. var redisClient *Redis
  9. var redisDb map[int]*redis.Client
  10. var redisOnce sync.Once
  11. var redislock *sync.Mutex = &sync.Mutex{}
  12. //create obj
  13. func GetRedisInstance() *Redis {
  14. redisOnce.Do(func() {
  15. if len(redisDb) == 0 {
  16. redisDb = make(map[int]*redis.Client)
  17. }
  18. redisClient = &Redis{}
  19. })
  20. return redisClient
  21. }
  22. //action
  23. func (Redis) Connect(db int) *redis.Client {
  24. //double check pattern
  25. if redisDb[db] == nil {
  26. redislock.Lock()
  27. defer redislock.Unlock()
  28. if redisDb[db] == nil {
  29. redisDb[db] = redis.NewClient(&redis.Options{
  30. Addr: GlobalConfig.RedisConnect,
  31. Password: "", // no password set
  32. DB: db, // use default DB
  33. })
  34. }
  35. }
  36. return redisDb[db]
  37. }