RedisObject.py 2.7 KB

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