游戏服务器使用redis缓存,缓存中的数据结构和数据库相同,如果数据库添加一个字段,怎样使缓存更新这个字段呢

huoling1521 2019-05-26 05:38:24
游戏服务器使用redis缓存,
如果一个user表 userId,userName两个字段,
玩家使用getUserById从数据库中获取user的对象存入redis缓存,缓存中的数据结构和数据库相同,
一次版本更新,user表需要添加一个字段age,这时redis缓存中的还是旧的结构,怎样更新redis缓存呢
是停服的时候删除所有的缓存吗还是怎么处理
求老师帮助

...全文
271 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
游北亮 2019-05-29
  • 打赏
  • 举报
回复
几个方案: 1、清空Redis,直接flushdb指令即可,但是如果db里有其它数据就要评估,清空是否有问题。 不过既然是缓存,程序当然会自动填充缓存,flushdb清空理论上不应该有问题。 2、既然是缓存,如果缓存时长比较短,可以不处理,等它自然过期,自然填充,过期时间内未取到age字段,按0处理。 3、楼上推荐的,如果缓存age不存在,就删除的方案,不推荐,给代码留下坑,或一段时间后变成了未知遗产。
Sunyiban 2019-05-29
  • 打赏
  • 举报
回复
这个看你的用户量了,如果人数多并发大,最好是你预先更新,本地写个单元测试查询所有的redis用户直接更新就行了。 如果用户不多就不需要处理了,用户登录了自己就更新了。
风吹丶麦浪J 2019-05-28
  • 打赏
  • 举报
回复
推荐看这个贴子https://blog.csdn.net/zl1zl2zl3/article/details/85539615希望有帮助
ziyuanxian 2019-05-28
  • 打赏
  • 举报
回复
新建一个KEY,然后删除原来的。
netwar 2019-05-28
  • 打赏
  • 举报
回复
update的时候,删除原先的缓存
Unicode Escapes 2019-05-27
  • 打赏
  • 举报
回复
在获取redis中user值后加个判断,如果其不包含age则重新从数据库获取并存到redis
tianfang 2019-05-26
  • 打赏
  • 举报
回复
服务器版本更新之后, 客户端发布之前,有足够时间做更新的 那种方法都可以

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧