封装实现
这里我们就写一个通用的缓存包。
直接全部缓存成json字符串,获取数据时在反序列化返回即可。
这里存入的是用户的信息
代码如下:
import redis, random, json
from models.user import UserModel
class BaseCacheTTL(object):
"""
缓存有效期
为防止缓存雪崩,在设置缓存有效期时采用设置不同有效期的方案
通过增加随机值实现
"""
TTL = 0 # 由子类设置
MAX_DELTA = 10 * 60 # 随机的增量上限
@classmethod
def get_val(cls):
return cls.TTL + random.randrange(0, cls.MAX_DELTA)
class UserProfileCacheTTL(BaseCacheTTL):
"""
用户资料数据缓存时间, 秒
"""
TTL = 30 * 60
class UserCache():
def __init__(self, user_id):
print('获取到的user_id,'