RedisObject.py 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. import redis
  2. from AnsjerPush.config import REDIS_ADDRESS
  3. # 本地调试把注释打开
  4. # REDIS_ADDRESS = '127.0.0.1'
  5. class RedisObject:
  6. def __init__(self, db=0):
  7. pool = redis.ConnectionPool(host=REDIS_ADDRESS, port=6379, db=db)
  8. self.CONN = redis.Redis(connection_pool=pool)
  9. def set_data(self, key, val, expire=0):
  10. try:
  11. self.CONN.set(key, val)
  12. if expire > 0:
  13. self.CONN.expire(key, expire)
  14. except Exception as e:
  15. return False
  16. else:
  17. return True
  18. def get_data(self, key):
  19. try:
  20. val = self.CONN.get(key)
  21. except Exception as e:
  22. print(repr(e))
  23. return False
  24. else:
  25. if val:
  26. return val.decode('utf-8')
  27. else:
  28. return False
  29. def del_data(self, key):
  30. try:
  31. val = self.CONN.delete(key)
  32. except Exception as e:
  33. print(repr(e))
  34. return False
  35. else:
  36. return True
  37. def get_size(self):
  38. return self.CONN.dbsize()
  39. # 向列表插入数据
  40. def rpush(self, name, val):
  41. self.CONN.rpush(name, val)
  42. # 获取列表长度
  43. def llen(self, name):
  44. return self.CONN.llen(name=name)
  45. # 获取列表所有数据
  46. def lrange(self, name, start, end):
  47. return self.CONN.lrange(name, start, end)
  48. def get_ttl(self, key):
  49. ttl = self.CONN.ttl(key)
  50. if ttl:
  51. return ttl
  52. else:
  53. return 0
  54. def ltrim(self, name, start, end):
  55. """
  56. 对一个列表进行修剪(trim),让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除
  57. @param name: 列表名称
  58. @param start: 区间开始下标, 0:第一个元素
  59. @param end: 区间结束下标, -1:最后一个元素
  60. @return : bool
  61. """
  62. return self.CONN.ltrim(name, start, end)
  63. def lindex(self, name, index=-1):
  64. """
  65. 根据下标查找元素
  66. @param name: 列表名称
  67. @param index: 区间结束下标, -1:最后一个元素
  68. @return : bool
  69. """
  70. return self.CONN.lindex(name, index)
  71. def close(self):
  72. """
  73. 关闭连接
  74. """
  75. return self.CONN.close()
  76. def hset_data(self, key, field, value, expire=0):
  77. """ 新增:存储 Hash 数据 """
  78. try:
  79. self.CONN.hset(key, field, value)
  80. if expire > 0:
  81. self.CONN.expire(key, expire)
  82. return True
  83. except Exception as e:
  84. print(f"Redis hset error: {repr(e)}")
  85. return False
  86. def hget_data(self, key, field):
  87. """ 新增:获取 Hash 数据 """
  88. try:
  89. val = self.CONN.hget(key, field)
  90. return val.decode('utf-8') if val else None
  91. except Exception as e:
  92. print(f"Redis hget error: {repr(e)}")
  93. return None