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 }