redis_db.py 1.7 KB

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