数据查询_缓存层的构建
缓存层的构建
可以将一些经常需要在数据库中提取的数据缓存到redis中
数据缓存层的原理
数据缓存层实际上就是对一个巨大的存在于内存中的DataSet进行管理,其原理如下:
(1)数据缓存层维护一个大DataSet,这个DataSet以static存在于应用程序中,这是缓存数据集。
(2)客户端发起请求,数据查询请求发送到数据缓存层。
(3)数据缓存层查询缓存起来的数据查询条件,查找该查询条件是否被使用过。
(4)如果该查询条件以前使用过,则不从数据库查询数据,只从缓存数据集中查询。
(5)如果该查询条件以前没有用过 ,则调用数据访问层从数据库中查询数据,并将查询数据合并到缓存数据集中,同时缓存该查询条件。
(6)更新数据时,将要更新的数据更新到数据库中,同时更新缓存数据集中的数据。
(7)在查询或更新数据时,都在缓存数据集相应数据表的扩展属性中记录当前访问时间。
(8)每隔一段时间对缓存数据集进行清理,当其中某条数据行超过一定时间(可以在配置文件中进行配置)没有访问,则将该表释放。
定义
**相关代码分析: **
def get_user_by_identity():
"""根据jwt token获取用户身份信息"""
from application.apps.users.models import User
identity = get_jwt_identity()
user_id = identity["id"]
# 缓存层, 先到redis中查找是否有登录用户的信息,找不到再去mysql,然后mysql返回的数据先保存到redis
user_info = redis.get("user_%s" % user_id)
if user_info:
data = json.loads(user_info)
return User.init_user_info(data)
else:
user = User.query.filter(User.id==user_id).first()
# 缓存到redis中
data = json.dumps(user.get_user_data())
redis.set("user_%s" % user_id, data)
return user
本例中首先根据flask_jwt验证后,获取到用户的身份信息(用户id值), 然后首先根据用户的id去redis中查找用户相关的信息,如果找到了就返回(这样就不需要再去mysql中进行查找了), 如果找不到,就去mysql中获取用户的信息,然后保存到redis中,下次的时候就会在redis中获取了
本文来自博客园,作者:长情不羁的五年,转载请注明原文链接:https://www.cnblogs.com/grlend/p/14540403.html

浙公网安备 33010602011771号