RedisObject.py 2.8 KB

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