12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- import redis
- from common import Material
- class SyncRedisHelper:
- _pool: redis.ConnectionPool = None
- _instance = None
- def __init__(self):
- if not self._instance:
- self._pool = self._get_pool()
- self._instance = self
- def _get_pool(self) -> redis.ConnectionPool:
- if self._pool is None:
- self._pool = redis.ConnectionPool(
- # host="r-bp1mb0v08fqi4hjffupd.redis.rds.aliyuncs.com", # 外网地址
- host="r-bp1mb0v08fqi4hjffu.redis.rds.aliyuncs.com", # 内网地址
- port=6379,
- db=0,
- password="Wqsd@2019",
- # password="Qingqu2019",
- )
- return self._pool
- def get_client(self) -> redis.Redis:
- pool = self._get_pool()
- client = redis.Redis(connection_pool=pool)
- return client
- def close(self):
- if self._pool:
- self._pool.disconnect(inuse_connections=True)
- def get_data(name, feishu_id, feishu_sheet):
- task = f"task:{name}"
- lock = f"lock:{name}"
- helper = SyncRedisHelper()
- client = helper.get_client()
- if not client.exists(task):
- acquire_lock = client.set(lock, 1, ex=60, nx=True)
- if not acquire_lock:
- return None
- if name == 'dy-pl-gjc' or name == 'ks-pl-gjc' or name == 'sph-pl-gjc':
- data = Material.get_keyword_data(feishu_id, feishu_sheet)
- elif name == 'dy-plzh-1' or name == 'dy-plzh' or name == 'sph-plzh'or name == 'ks-plzh':
- data = Material.get_pl_task_data(feishu_id, feishu_sheet)
- else:
- data = Material.get_task_data(feishu_id, feishu_sheet)
- client.rpush(task, *data)
- ret = client.lpop(task)
- # if name == 'dy-pl-gjc' or name == 'dd-sp' or name == 'ks-pl-gjc' or name == 'sph-pl-gjc':
- # client.rpush(task, ret)
- return ret
- """搜索计数插入"""
- def increment_key(mark_count):
- helper = SyncRedisHelper()
- client = helper.get_client()
- client.incrby(mark_count, 1)
- """搜索计数获取"""
- def get_first_value_with_prefix(mark_count):
- helper = SyncRedisHelper()
- client = helper.get_client()
- value = client.get(mark_count)
- return int(value) if value is not None else 1
- def del_dyss_redis_key(mark_count):
- helper = SyncRedisHelper()
- client = helper.get_client()
- client.delete(mark_count)
- def get_redis_video_data(video_id):
- lock = f"video_lock:{video_id}"
- helper = SyncRedisHelper()
- client = helper.get_client()
- acquire_lock = client.set(lock, 1, ex=600, nx=True)
- if not acquire_lock:
- return True
- return False
|