黄臻代码注释

master
pg6fnlak2 3 months ago
parent 36eaefd53f
commit 0437b071a1

@ -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)

Loading…
Cancel
Save