diff --git a/src/DjangoBlog-master/servermanager/MemcacheStorage.py b/src/DjangoBlog-master/servermanager/MemcacheStorage.py index 38a7990..2019f91 100644 --- a/src/DjangoBlog-master/servermanager/MemcacheStorage.py +++ b/src/DjangoBlog-master/servermanager/MemcacheStorage.py @@ -5,28 +5,83 @@ from djangoblog.utils import cache class MemcacheStorage(SessionStorage): + """ + 基于Memcache的会话存储实现类 + + 该类继承自SessionStorage,使用memcache作为后端存储来管理会话数据 + + Args: + prefix (str): 存储键名的前缀,默认为'ws_' + """ def __init__(self, prefix='ws_'): self.prefix = prefix self.cache = cache @property def is_available(self): + """ + 检查存储是否可用 + + 通过设置并获取一个测试值来验证存储服务的可用性 + + Returns: + bool: 存储服务可用返回True,否则返回False + """ value = "1" self.set('checkavaliable', value=value) return value == self.get('checkavaliable') def key_name(self, s): + """ + 生成带前缀的完整键名 + + Args: + s (str): 原始键名 + + Returns: + str: 添加前缀后的完整键名 + """ return '{prefix}{s}'.format(prefix=self.prefix, s=s) def get(self, id): + """ + 根据ID获取会话数据 + + Args: + id (str): 会话ID + + Returns: + dict: 解析后的会话数据字典 + """ + # 构造完整的缓存键名 id = self.key_name(id) + # 从缓存中获取会话数据,如果不存在则返回空JSON对象 session_json = self.cache.get(id) or '{}' + # 将JSON字符串解析为Python对象并返回 return json_loads(session_json) def set(self, id, value): + """ + 设置会话数据 + + Args: + id (str): 会话ID + value (any): 要存储的会话数据 + """ + # 构造完整的缓存键名 id = self.key_name(id) + # 将数据序列化为JSON字符串并存储到缓存中 self.cache.set(id, json_dumps(value)) def delete(self, id): + """ + 删除指定ID的会话数据 + + Args: + id (str): 要删除的会话ID + """ + # 构造完整的缓存键名 id = self.key_name(id) + # 从缓存中删除对应的会话数据 self.cache.delete(id) +