redis.go 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. package go_redis
  2. import (
  3. "context"
  4. "encoding/json"
  5. "eta/eta_mini_api/utils"
  6. "fmt"
  7. "time"
  8. )
  9. // IsExist 检测redis中存在该key
  10. func IsExist(key string) (ok bool) {
  11. result, err := utils.Redis.Exists(context.TODO(), key).Result()
  12. if err != nil {
  13. fmt.Println("err:", err)
  14. return
  15. }
  16. if result > 0 {
  17. ok = true
  18. }
  19. return
  20. }
  21. // SetNX 给key设置值,并设置过期时间
  22. func SetNX(key string, val interface{}, timeout time.Duration) (ok bool) {
  23. result, err := utils.Redis.SetEX(context.TODO(), key, val, timeout).Result()
  24. if err != nil {
  25. return false
  26. }
  27. if result == "OK" {
  28. ok = true
  29. }
  30. return
  31. }
  32. // RedisInt 获取int的值
  33. func RedisInt(key string) (result int, err error) {
  34. result, err = utils.Redis.Get(context.TODO(), key).Int()
  35. return
  36. }
  37. // RedisString 获取string的值
  38. func RedisString(key string) (result string, err error) {
  39. result, err = utils.Redis.Get(context.TODO(), key).Result()
  40. return
  41. }
  42. // Delete 删除key
  43. func Delete(key string) (err error) {
  44. err = utils.Redis.Del(context.TODO(), key).Err()
  45. return
  46. }
  47. // LPush 从列表左侧push数据
  48. func LPush(key string, val interface{}) (err error) {
  49. data, _ := json.Marshal(val)
  50. err = utils.Redis.LPush(context.TODO(), key, data).Err()
  51. return err
  52. }
  53. // BRPop 移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
  54. func BRPop(key string) (data string, err error) {
  55. result, err := utils.Redis.BRPop(context.TODO(), 1*time.Second, key).Result()
  56. if err != nil {
  57. //fmt.Println("err:", err)
  58. return
  59. }
  60. if len(result) == 2 {
  61. data = result[1]
  62. } else {
  63. fmt.Println("result异常:", result)
  64. }
  65. return
  66. }
  67. // BRPop2Func 移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
  68. func BRPop2Func(key string, callback func([]byte)) {
  69. result, err := BRPop(key)
  70. if err != nil {
  71. //fmt.Println("err:", err)
  72. return
  73. }
  74. resultByte := []byte(result)
  75. callback(resultByte)
  76. return
  77. }
  78. func Incr(key string) (err error) {
  79. err = utils.Redis.Incr(context.TODO(), key).Err()
  80. return
  81. }