RedisObject.py 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  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, mode='w', 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. if mode == 'w':
  15. host = REDIS_ADDRESS
  16. else:
  17. host = 'amaaaaaayszequiamxr7cdpparig3ptmytvde5vvnz6n7gceo4232sbhhlsa-r.redis.us-phoenix-1.oci.oraclecloud.com'
  18. self.POOL = redis.ConnectionPool(connection_class=SSLConnection, host=host, port=6379, db=db)
  19. self.CONN = redis.StrictRedis(
  20. connection_pool=self.POOL,
  21. host=host,
  22. ssl=True,
  23. ssl_cert_reqs=None,
  24. )
  25. def set_data(self, key, val, expire=0):
  26. try:
  27. self.CONN.set(key, val)
  28. if expire > 0:
  29. self.CONN.expire(key, expire)
  30. except Exception as e:
  31. return False
  32. else:
  33. return True
  34. def get_data(self, key):
  35. try:
  36. val = self.CONN.get(key)
  37. except Exception as e:
  38. print(repr(e))
  39. return False
  40. else:
  41. if val:
  42. return val.decode('utf-8')
  43. else:
  44. return False
  45. def del_data(self, key):
  46. try:
  47. val = self.CONN.delete(key)
  48. except Exception as e:
  49. print(repr(e))
  50. return False
  51. else:
  52. return True
  53. def get_size(self):
  54. return self.CONN.dbsize()
  55. # 向列表插入数据
  56. def rpush(self, name, val):
  57. self.CONN.rpush(name, val)
  58. # 获取列表长度
  59. def llen(self, name):
  60. return self.CONN.llen(name=name)
  61. # 获取列表所有数据
  62. def lrange(self, name, start, end):
  63. return self.CONN.lrange(name, start, end)
  64. def get_ttl(self, key):
  65. ttl = self.CONN.ttl(key)
  66. if ttl:
  67. return ttl
  68. else:
  69. return 0
  70. def ltrim(self, name, start, end):
  71. """
  72. 对一个列表进行修剪(trim),让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除
  73. @param name: 列表名称
  74. @param start: 区间开始下标, 0:第一个元素
  75. @param end: 区间结束下标, -1:最后一个元素
  76. @return : bool
  77. """
  78. return self.CONN.ltrim(name, start, end)
  79. def lindex(self, name, index=-1):
  80. """
  81. 根据下标查找元素
  82. @param name: 列表名称
  83. @param index: 区间结束下标, -1:最后一个元素
  84. @return : bool
  85. """
  86. return self.CONN.lindex(name, index)