浏览代码

fix:更换redis

Roc 2 年之前
父节点
当前提交
ac3c27b9c5
共有 1 个文件被更改,包括 87 次插入0 次删除
  1. 87 0
      services/go_redis/redis.go

+ 87 - 0
services/go_redis/redis.go

@@ -0,0 +1,87 @@
+package go_redis
+
+import (
+	"context"
+	"encoding/json"
+	"fmt"
+	"hongze/hongze_api/utils"
+	"time"
+)
+
+// IsExist 检测redis中存在该key
+func IsExist(key string) (ok bool) {
+	result, err := utils.Redis.Exists(context.TODO(), key).Result()
+	if err != nil {
+		fmt.Println("err:", err)
+		return
+	}
+	if result > 0 {
+		ok = true
+	}
+
+	return
+}
+
+// SetNX 给key设置值,并设置过期时间
+func SetNX(key string, val interface{}, timeout time.Duration) (ok bool) {
+	result, err := utils.Redis.SetEX(context.TODO(), key, val, timeout).Result()
+	if err != nil {
+		return false
+	}
+	if result == "OK" {
+		ok = true
+	}
+	return
+}
+
+// RedisInt 获取int的值
+func RedisInt(key string) (result int, err error) {
+	result, err = utils.Redis.Get(context.TODO(), key).Int()
+	return
+}
+
+// RedisString 获取string的值
+func RedisString(key string) (result string, err error) {
+	result, err = utils.Redis.Get(context.TODO(), key).Result()
+	return
+}
+
+// Delete 删除key
+func Delete(key string) (err error) {
+	err = utils.Redis.Del(context.TODO(), key).Err()
+	return
+}
+
+// LPush 从列表左侧push数据
+func LPush(key string, val interface{}) (err error) {
+	data, _ := json.Marshal(val)
+	err = utils.Redis.LPush(context.TODO(), key, data).Err()
+	return err
+}
+
+// BRPop 移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
+func BRPop(key string) (data string, err error) {
+	result, err := utils.Redis.BRPop(context.TODO(), 1*time.Second, key).Result()
+	if err != nil {
+		//fmt.Println("err:", err)
+		return
+	}
+	if len(result) == 2 {
+		data = result[1]
+	} else {
+		fmt.Println("result异常:", result)
+	}
+	return
+}
+
+// BRPop2Func 移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
+func BRPop2Func(key string, callback func([]byte)) {
+	result, err := BRPop(key)
+	if err != nil {
+		//fmt.Println("err:", err)
+		return
+	}
+	resultByte := []byte(result)
+	callback(resultByte)
+	return
+}