RedisObject.py 3.4 KB

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