redis.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  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. // Set 给key设置值,并设置过期时间
  22. func Set(key string, val interface{}, timeout time.Duration) (ok bool) {
  23. result, err := utils.Redis.Set(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. // SetNX 给key设置值,并设置过期时间
  33. func SetNX(key string, val interface{}, timeout time.Duration) (ok bool) {
  34. result, err := utils.Redis.SetEX(context.TODO(), key, val, timeout).Result()
  35. if err != nil {
  36. return false
  37. }
  38. if result == "OK" {
  39. ok = true
  40. }
  41. return
  42. }
  43. // RedisInt 获取int的值
  44. func RedisInt(key string) (result int, err error) {
  45. result, err = utils.Redis.Get(context.TODO(), key).Int()
  46. return
  47. }
  48. // RedisString 获取string的值
  49. func RedisString(key string) (result string, err error) {
  50. result, err = utils.Redis.Get(context.TODO(), key).Result()
  51. return
  52. }
  53. // Delete 删除key
  54. func Delete(key string) (err error) {
  55. err = utils.Redis.Del(context.TODO(), key).Err()
  56. return
  57. }
  58. // LPush 从列表左侧push数据
  59. func LPush(key string, val interface{}) (err error) {
  60. data, _ := json.Marshal(val)
  61. err = utils.Redis.LPush(context.TODO(), key, data).Err()
  62. return err
  63. }
  64. // BRPop 移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
  65. func BRPop(key string) (data string, err error) {
  66. result, err := utils.Redis.BRPop(context.TODO(), 1*time.Second, key).Result()
  67. if err != nil {
  68. //fmt.Println("err:", err)
  69. return
  70. }
  71. if len(result) == 2 {
  72. data = result[1]
  73. } else {
  74. fmt.Println("result异常:", result)
  75. }
  76. return
  77. }
  78. // BRPop2Func 移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
  79. func BRPop2Func(key string, callback func([]byte)) {
  80. result, err := BRPop(key)
  81. if err != nil {
  82. //fmt.Println("err:", err)
  83. return
  84. }
  85. resultByte := []byte(result)
  86. callback(resultByte)
  87. return
  88. }
  89. func Incr(key string) (err error) {
  90. err = utils.Redis.Incr(context.TODO(), key).Err()
  91. return
  92. }