1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- package lib
- import (
- . "gitdxz.51daxuetong.cn/go_dev/jjl-tools/tinodeService/config"
- "sync"
- "github.com/go-redis/redis"
- )
- type Redis struct{}
- var redisClient *Redis
- var redisDb map[int]*redis.Client
- var redisOnce sync.Once
- var redislock *sync.Mutex = &sync.Mutex{}
- //create obj
- func GetRedisInstance() *Redis {
- redisOnce.Do(func() {
- if len(redisDb) == 0 {
- redisDb = make(map[int]*redis.Client)
- }
- redisClient = &Redis{}
- })
- return redisClient
- }
- //action
- func (Redis) Connect(db int) *redis.Client {
- //double check pattern
- if redisDb[db] == nil {
- redislock.Lock()
- defer redislock.Unlock()
- if redisDb[db] == nil {
- redisDb[db] = redis.NewClient(&redis.Options{
- Addr: GlobalConfig.RedisConnect,
- Password: "", // no password set
- DB: db, // use default DB
- })
- }
- }
- return redisDb[db]
- }
|