Commit b323e3d9 authored by Jalin's avatar Jalin

增加 redis key prefix

parent e25dda3a
...@@ -15,23 +15,24 @@ from py12306.log.cluster_log import ClusterLog ...@@ -15,23 +15,24 @@ from py12306.log.cluster_log import ClusterLog
@singleton @singleton
class Cluster(): class Cluster():
KEY_QUERY_COUNT = 'query_count' KEY_PREFIX = 'py12306_' # 目前只能手动
KEY_QUERY_LAST_TIME = 'query_last_time' KEY_QUERY_COUNT = KEY_PREFIX + 'query_count'
KEY_CONFIGS = 'configs' KEY_QUERY_LAST_TIME = KEY_PREFIX + 'query_last_time'
KEY_NODES = 'nodes' KEY_CONFIGS = KEY_PREFIX + 'configs'
KEY_CHANNEL_LOG = 'channel_log' KEY_NODES = KEY_PREFIX + 'nodes'
KEY_CHANNEL_EVENT = 'channel_even' KEY_CHANNEL_LOG = KEY_PREFIX + 'channel_log'
KEY_USER_COOKIES = 'user_cookies' KEY_CHANNEL_EVENT = KEY_PREFIX + 'channel_even'
KEY_USER_LAST_HEARTBEAT = 'user_last_heartbeat' KEY_USER_COOKIES = KEY_PREFIX + 'user_cookies'
KEY_NODES_ALIVE = 'nodes_alive' KEY_USER_LAST_HEARTBEAT = KEY_PREFIX + 'user_last_heartbeat'
KEY_NODES_ALIVE = KEY_PREFIX + 'nodes_alive'
# 锁 # 锁
KEY_LOCK_INIT_USER = 'lock_init_user' # 暂未使用 KEY_LOCK_INIT_USER = KEY_PREFIX + 'lock_init_user' # 暂未使用
KEY_LOCK_DO_ORDER = 'lock_do_order' # 订单锁 KEY_LOCK_DO_ORDER = KEY_PREFIX + 'lock_do_order' # 订单锁
lock_do_order_time = 60 * 1 # 订单锁超时时间 lock_do_order_time = 60 * 1 # 订单锁超时时间
lock_prefix = 'lock_' # 锁键前缀 lock_prefix = KEY_PREFIX + 'lock_' # 锁键前缀
lock_info_prefix = 'info_' lock_info_prefix = KEY_PREFIX + 'info_'
KEY_MASTER = 1 KEY_MASTER = 1
KEY_SLAVE = 0 KEY_SLAVE = 0
...@@ -220,20 +221,20 @@ class Cluster(): ...@@ -220,20 +221,20 @@ class Cluster():
if method: if method:
create_thread_and_run(Event(), event_name, Const.IS_TEST, kwargs={'data': data, 'callback': True}) create_thread_and_run(Event(), event_name, Const.IS_TEST, kwargs={'data': data, 'callback': True})
def get_lock(self, key, timeout=1, info={}): def get_lock(self, key: str, timeout=1, info={}):
timeout = int(time.time()) + timeout timeout = int(time.time()) + timeout
res = self.session.setnx(key, timeout) res = self.session.setnx(key, timeout)
if res: if res:
if info: self.session.set_dict(self.lock_info_prefix + key, info) # 存储额外信息 if info: self.session.set_dict(self.lock_info_prefix + key.replace(self.KEY_PREFIX, ''), info) # 存储额外信息
return True return True
return False return False
def get_lock_info(self, key, default={}): def get_lock_info(self, key, default={}):
return self.session.get_dict(self.lock_info_prefix + key, default=default) return self.session.get_dict(self.lock_info_prefix + key.replace(self.KEY_PREFIX, ''), default=default)
def release_lock(self, key): def release_lock(self, key):
self.session.delete(key) self.session.delete(key)
self.session.delete(self.lock_info_prefix + key) self.session.delete(self.lock_info_prefix + key.replace(self.KEY_PREFIX, ''))
def check_locks(self): def check_locks(self):
locks = self.session.keys(self.lock_prefix + '*') locks = self.session.keys(self.lock_prefix + '*')
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment