|
@@ -0,0 +1,213 @@
|
|
|
|
|
+package lib_redis
|
|
|
|
|
+
|
|
|
|
|
+import (
|
|
|
|
|
+ "encoding/json"
|
|
|
|
|
+ "fmt"
|
|
|
|
|
+ "github.com/astaxie/beego"
|
|
|
|
|
+ "github.com/go-redis/redis"
|
|
|
|
|
+ "time"
|
|
|
|
|
+)
|
|
|
|
|
+
|
|
|
|
|
+type RedisClient struct {
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func Del(key string) error {
|
|
|
|
|
+ db, err := beego.AppConfig.Int("AliRedisDb")
|
|
|
|
|
+ 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
|
|
|
|
|
+ }
|
|
|
|
|
+ return client.Del(key).Err()
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// SetJsonEx set Json and second
|
|
|
|
|
+func SetJsonEx(key string, data interface{}, seconds int) error {
|
|
|
|
|
+ jsonData, err := json.Marshal(data)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ return nil
|
|
|
|
|
+ }
|
|
|
|
|
+ return SetRedisValue(key, string(jsonData), time.Duration(seconds)*time.Second)
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+//保存keyValue
|
|
|
|
|
+func SetRedisValue(key, value string, expiration time.Duration) error {
|
|
|
|
|
+ db, err := beego.AppConfig.Int("AliRedisDb")
|
|
|
|
|
+ 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) //忽略错误
|
|
|
|
|
+ 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()
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ beego.BeeLogger.Error("%s", err)
|
|
|
|
|
+ return false, ""
|
|
|
|
|
+ }
|
|
|
|
|
+ val, err := client.Get(key).Result()
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ return false, ""
|
|
|
|
|
+ }
|
|
|
|
|
+ //beego.BeeLogger.Info("result 返回字符:%s", val)
|
|
|
|
|
+ err = json.Unmarshal([]byte(val), &resp)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ return false, ""
|
|
|
|
|
+ }
|
|
|
|
|
+ return true, resp
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// GetFromJSON 从 lib_redis 读取数据, 自带解析JSON格式
|
|
|
|
|
+func GetFromJSON(data interface{}, key string) error {
|
|
|
|
|
+ db, err := beego.AppConfig.Int("AliRedisDb")
|
|
|
|
|
+ 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)
|
|
|
|
|
+ if val.Err() != nil {
|
|
|
|
|
+ return val.Err()
|
|
|
|
|
+ }
|
|
|
|
|
+ jsonData, err := val.Bytes()
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ return err
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if err := json.Unmarshal(jsonData, data); err != nil {
|
|
|
|
|
+ beego.Warn("lib_redis.GetFromJSON: %s %s", string(jsonData), err)
|
|
|
|
|
+
|
|
|
|
|
+ return err
|
|
|
|
|
+ }
|
|
|
|
|
+ //beego.BeeLogger.Info("result 返回字符:%s", jsonData)
|
|
|
|
|
+
|
|
|
|
|
+ return nil
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+//保存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()
|
|
|
|
|
+ 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则在尾部插入
|
|
|
|
|
+ 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()
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ beego.BeeLogger.Error("%s", err)
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+ client.LRem(key, 0, value)
|
|
|
|
|
+ beego.BeeLogger.Info("throwout lib_redis key (%s), value=%s", key, value)
|
|
|
|
|
+ return
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+//----------- 获取redisKey值 -------------------
|
|
|
|
|
+func GetKeyByOrderId(orderId string) string {
|
|
|
|
|
+ return fmt.Sprintf("order_model.GetOrderByOId:%s", orderId)
|
|
|
|
|
+
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+//所有未支付普通订单加入队列,用作倒计到时取消
|
|
|
|
|
+func GetOrderCancelList() string {
|
|
|
|
|
+ return fmt.Sprintf("mall:cancelorder")
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+//所有自动提现订单加入队列,自动提现
|
|
|
|
|
+func GetAutoTakeCashList() string {
|
|
|
|
|
+ return fmt.Sprintf("mall:takecash")
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+//商城商品ID键值
|
|
|
|
|
+func GetKeyByProductId(pId int64) string {
|
|
|
|
|
+ return fmt.Sprintf("product_model.GetProductById:%d", pId)
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+//商城微信会员rediskey
|
|
|
|
|
+func GetKeyByWxUserId(id int64) string {
|
|
|
|
|
+ return fmt.Sprintf("user_model.GetWxUserById:%d", id)
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+//商城注册会员rediskey
|
|
|
|
|
+func GetKeyByUserId(id int64) string {
|
|
|
|
|
+ return fmt.Sprintf("user_model.GetKeyByUserId:%d", id)
|
|
|
|
|
+}
|