redis_db.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import redis
  2. from datetime import timedelta
  3. class SyncRedisHelper:
  4. _pool: redis.ConnectionPool = None
  5. _instance = None
  6. def __init__(self):
  7. if not self._instance:
  8. self._pool = self._get_pool()
  9. self._instance = self
  10. def _get_pool(self) -> redis.ConnectionPool:
  11. if self._pool is None:
  12. self._pool = redis.ConnectionPool(
  13. host="r-bp1mb0v08fqi4hjffu.redis.rds.aliyuncs.com", # 内网地址
  14. # host="r-bp154bpw97gptefiqkpd.redis.rds.aliyuncs.com", # 外网地址
  15. port=6379,
  16. db=2,
  17. password="Wqsd@2019",
  18. # password="Qingqu2019",
  19. )
  20. return self._pool
  21. def get_client(self) -> redis.Redis:
  22. pool = self._get_pool()
  23. client = redis.Redis(connection_pool=pool)
  24. return client
  25. def close(self):
  26. if self._pool:
  27. self._pool.disconnect(inuse_connections=True)
  28. def store_data(platform, out_video_id):
  29. key = f"crawler:duplicate:{platform}:{out_video_id}"
  30. value = 1
  31. timeout = timedelta(days=60) # 60天超时时间
  32. helper = SyncRedisHelper()
  33. client = helper.get_client()
  34. client.set(key, value)
  35. client.expire(key, timeout)
  36. def get_data(platform, out_video_id):
  37. key = f"crawler:duplicate:{platform}:{out_video_id}"
  38. helper = SyncRedisHelper()
  39. client = helper.get_client()
  40. value = client.exists(key)
  41. return value
  42. # 示例:存储一个数据
  43. # store_data('xiaoniangao', '123457')
  44. # 示例:获取一个数据
  45. # value = get_data('xiaoniangao', '1234857')
  46. # if value is None:
  47. # print("Value does not exist")
  48. # else:
  49. # print(f"Retrieved value: {value}")