|
@@ -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
|
|
|
+}
|