12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- package lib
- import (
- "context"
- "gitdxz.51daxuetong.cn/go_dev/bids_rpcx/config"
- "github.com/go-redis/redis/v8"
- "sync"
- "time"
- )
- var Redis *redis.Client
- var redisSyncOne sync.Once
- func GetRedisClient() (*redis.Client, error) {
- redisSyncOne.Do(func() {
- redisObj, err := GetNewRedisClient()
- if err != nil {
- return
- }
- Redis = redisObj
- })
- err := Redis.Ping(context.Background()).Err()
- if err != nil {
- time.Sleep(10 * time.Second)
- Redis, err := GetNewRedisClient()
- return Redis, err
- }
- return Redis, err
- }
- func GetNewRedisClient() (*redis.Client, error) {
- cc := config.GetConfig()
- rHost := cc.String("redis_host")
- rPort := cc.String("redis_port")
- rPwd := cc.String("redis_password")
- redisObj := redis.NewClient(&redis.Options{
- Addr: rHost + ":" + rPort,
- Password: rPwd, // no password set
- DB: 0, // use default DB
- })
- err := redisObj.Ping(context.Background()).Err()
- return redisObj, err
- }
|