RedisObject.py 2.8 KB

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