RedisObject.py 2.6 KB

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