abiao лет назад: 5
Родитель
Сommit
ce8e9d42a9
1 измененных файлов с 35 добавлено и 75 удалено
  1. 35 75
      go/gopath/src/fohow.com/libs/lib_redis/redis.go

+ 35 - 75
go/gopath/src/fohow.com/libs/lib_redis/redis.go

@@ -8,25 +8,35 @@ import (
 	"time"
 )
 
-func Del(key string) error {
+func redisInitClient() *redis.Client {
 	db, err := beego.AppConfig.Int("AliRedisDb")
 	if err != nil {
 		beego.BeeLogger.Error("%s", err)
-		return err
+		return nil
 	}
 	client := redis.NewClient(&redis.Options{
 		Addr:     beego.AppConfig.String("AliRedisHost"),
 		Password: beego.AppConfig.String("AliRedisPwd"), //默认空密码
 		DB:       db,                                    //使用默认数据库
 	})
-	//beego.BeeLogger.Info("Connect lib_redis name (%s), pwd=%s", beego.AppConfig.String("AliRedisHost"), beego.AppConfig.String("AliRedisPwd"))
-	defer client.Close() //最后关闭
+	//defer client.Close()
 	_, err = client.Ping().Result()
 	if err != nil {
+		beego.BeeLogger.Error("redisError redisInitClient(), err:%s", err)
+		return nil
+	}
+	return client
+}
+
+func Del(key string) error {
+	redisClient := redisInitClient()
+	defer redisClient.Close()
+	_, err := redisClient.Ping().Result()
+	if err != nil {
 		beego.BeeLogger.Error("%s", err)
 		return err
 	}
-	return client.Del(key).Err()
+	return redisClient.Del(key).Err()
 }
 
 // SetJsonEx set Json and second
@@ -40,47 +50,27 @@ func SetJsonEx(key string, data interface{}, seconds int) error {
 
 //保存keyValue
 func SetRedisValue(key, value string, expiration time.Duration) error {
-	db, err := beego.AppConfig.Int("AliRedisDb")
+	redisClient := redisInitClient()
+	defer redisClient.Close()
+	_, err := redisClient.Ping().Result()
 	if err != nil {
 		beego.BeeLogger.Error("%s", err)
 		return err
 	}
-	client := redis.NewClient(&redis.Options{
-		Addr:     beego.AppConfig.String("AliRedisHost"),
-		Password: beego.AppConfig.String("AliRedisPwd"), //默认空密码
-		DB:       db,                                    //使用默认数据库
-	})
-	beego.BeeLogger.Info("Connect lib_redis name (%s), pwd=%s", beego.AppConfig.String("AliRedisHost"), beego.AppConfig.String("AliRedisPwd"))
-	defer client.Close() //最后关闭
-	_, err = client.Ping().Result()
-	if err != nil {
-		beego.BeeLogger.Error("%s", err)
-		return err
-	}
-
-	client.Set(key, value, expiration) //忽略错误
+	redisClient.Set(key, value, expiration) //忽略错误
 	return nil
 }
 
 //获取keyValue
 func GetRedisValue(key string, resp interface{}) (bool, interface{}) {
-	db, err := beego.AppConfig.Int("AliRedisDb")
-	if err != nil {
-		beego.BeeLogger.Error("%s", err)
-		return false, ""
-	}
-	client := redis.NewClient(&redis.Options{
-		Addr:     beego.AppConfig.String("AliRedisHost"),
-		Password: beego.AppConfig.String("AliRedisPwd"), //默认空密码
-		DB:       db,                                    //使用默认数据库
-	})
-	defer client.Close() //最后关闭
-	_, err = client.Ping().Result()
+	redisClient := redisInitClient()
+	defer redisClient.Close()
+	_, err := redisClient.Ping().Result()
 	if err != nil {
 		beego.BeeLogger.Error("%s", err)
 		return false, ""
 	}
-	val, err := client.Get(key).Result()
+	val, err := redisClient.Get(key).Result()
 	if err != nil {
 		return false, ""
 	}
@@ -94,23 +84,14 @@ func GetRedisValue(key string, resp interface{}) (bool, interface{}) {
 
 // GetFromJSON 从 lib_redis 读取数据, 自带解析JSON格式
 func GetFromJSON(data interface{}, key string) error {
-	db, err := beego.AppConfig.Int("AliRedisDb")
+	redisClient := redisInitClient()
+	defer redisClient.Close()
+	_, err := redisClient.Ping().Result()
 	if err != nil {
 		beego.BeeLogger.Error("%s", err)
 		return err
 	}
-	client := redis.NewClient(&redis.Options{
-		Addr:     beego.AppConfig.String("AliRedisHost"),
-		Password: beego.AppConfig.String("AliRedisPwd"), //默认空密码
-		DB:       db,                                    //使用默认数据库
-	})
-	defer client.Close() //最后关闭
-	_, err = client.Ping().Result()
-	if err != nil {
-		beego.BeeLogger.Error("%s", err)
-		return err
-	}
-	val := client.Get(key)
+	val := redisClient.Get(key)
 	if val.Err() != nil {
 		return val.Err()
 	}
@@ -131,49 +112,28 @@ func GetFromJSON(data interface{}, key string) error {
 
 //保存redis队列
 func ThrowInRedisList(key, value string) {
-	db, err := beego.AppConfig.Int("AliRedisDb")
-	if err != nil {
-		beego.BeeLogger.Error("%s", err)
-		return
-	}
-	client := redis.NewClient(&redis.Options{
-		Addr:     beego.AppConfig.String("AliRedisHost"),
-		Password: beego.AppConfig.String("AliRedisPwd"), //默认空密码
-		DB:       db,                                    //使用默认数据库
-	})
-	beego.BeeLogger.Info("Connect lib_redis name (%s), pwd=%s", beego.AppConfig.String("AliRedisHost"), beego.AppConfig.String("AliRedisPwd"))
-	defer client.Close() //最后关闭
-	_, err = client.Ping().Result()
+	redisClient := redisInitClient()
+	defer redisClient.Close()
+	_, err := redisClient.Ping().Result()
 	if err != nil {
 		beego.BeeLogger.Error("%s", err)
 		return
 	}
 	beego.BeeLogger.Info("throwin lib_redis key (%s), value=%s", key, value)
-
-	client.LPush(key, value) //rpush则在尾部插入
+	redisClient.LPush(key, value) //rpush则在尾部插入
 	return
 }
 
 //从redis队列剔除
 func ThrowOutRedisList(key, value string) {
-	db, err := beego.AppConfig.Int("AliRedisDb")
-	if err != nil {
-		beego.BeeLogger.Error("%s", err)
-		return
-	}
-	client := redis.NewClient(&redis.Options{
-		Addr:     beego.AppConfig.String("AliRedisHost"),
-		Password: beego.AppConfig.String("AliRedisPwd"), //默认空密码
-		DB:       db,                                    //使用默认数据库
-	})
-	beego.BeeLogger.Info("Connect lib_redis name (%s), pwd=%s", beego.AppConfig.String("AliRedisHost"), beego.AppConfig.String("AliRedisPwd"))
-	defer client.Close() //最后关闭
-	_, err = client.Ping().Result()
+	redisClient := redisInitClient()
+	defer redisClient.Close()
+	_, err := redisClient.Ping().Result()
 	if err != nil {
 		beego.BeeLogger.Error("%s", err)
 		return
 	}
-	client.LRem(key, 0, value)
+	redisClient.LRem(key, 0, value)
 	beego.BeeLogger.Info("throwout lib_redis key (%s), value=%s", key, value)
 	return
 }