123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- 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
- }
|