Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

redis_conn.py 2.3KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import json
  2. import redis
  3. import logging
  4. from rag import settings
  5. from rag.utils import singleton
  6. @singleton
  7. class RedisDB:
  8. def __init__(self):
  9. self.REDIS = None
  10. self.config = settings.REDIS
  11. self.__open__()
  12. def __open__(self):
  13. try:
  14. self.REDIS = redis.Redis(host=self.config.get("host", "redis").split(":")[0],
  15. port=int(self.config.get("host", ":6379").split(":")[1]),
  16. db=int(self.config.get("db", 1)),
  17. password=self.config.get("password"))
  18. except Exception as e:
  19. logging.warning("Redis can't be connected.")
  20. return self.REDIS
  21. def is_alive(self):
  22. return self.REDIS is not None
  23. def exist(self, k):
  24. if not self.REDIS: return
  25. try:
  26. return self.REDIS.exists(k)
  27. except Exception as e:
  28. logging.warning("[EXCEPTION]exist" + str(k) + "||" + str(e))
  29. self.__open__()
  30. def get(self, k):
  31. if not self.REDIS: return
  32. try:
  33. return self.REDIS.get(k)
  34. except Exception as e:
  35. logging.warning("[EXCEPTION]get" + str(k) + "||" + str(e))
  36. self.__open__()
  37. def set_obj(self, k, obj, exp=3600):
  38. try:
  39. self.REDIS.set(k, json.dumps(obj, ensure_ascii=False), exp)
  40. return True
  41. except Exception as e:
  42. logging.warning("[EXCEPTION]set_obj" + str(k) + "||" + str(e))
  43. self.__open__()
  44. return False
  45. def set(self, k, v, exp=3600):
  46. try:
  47. self.REDIS.set(k, v, exp)
  48. return True
  49. except Exception as e:
  50. logging.warning("[EXCEPTION]set" + str(k) + "||" + str(e))
  51. self.__open__()
  52. return False
  53. def transaction(self, key, value, exp=3600):
  54. try:
  55. pipeline = self.REDIS.pipeline(transaction=True)
  56. pipeline.set(key, value, exp, nx=True)
  57. pipeline.execute()
  58. return True
  59. except Exception as e:
  60. logging.warning("[EXCEPTION]set" + str(key) + "||" + str(e))
  61. self.__open__()
  62. return False
  63. REDIS_CONN = RedisDB()