RedisObject.py 2.5 KB

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