数据量大, 同时用户访问量大时, 硬用数据库查询的方式 会让服务器爆炸,
所以需要在一些地方使用redis辅助查询.
假设我们有一个游戏列表api, 里面需要放回 最近参加游戏的10个人的头像,
从数据库的层面看
User表 -------- Game表 ------------- Record游戏记录表
首先第一点 这最近10个人的头像肯定没必要放在Game里, 如果大量用户同时访问 会反复读取 更新这个字段 没必要.
如果不记录这10个人的头像 只是放在Record表中 让数据库直接读取的话, 多个用户 遍历 Game表 再变量 最近的10个游戏记录表, 查询量太大了...
所以 我们需要通过Redis 的list结构, 记录一个游戏的最近10个头像.
Redis list操作的好处有很多,
Redis list底层结构是链试二叉树, 原生支持底层数据操作函数
速度快 降低数据库压力
整体的思路是:
输入game_id 调取 获取最近的10个用户头像函数
如果有直接返回, 如果没有则进行数据库查询 并以game_id为基础 命名queue,
超时时间可以根据情况设置
每个用户参与游戏时,需要把自己的头像lpush到该list中
网友评论