为了账号安全,请及时绑定邮箱和手机立即绑定

redis缓存如何做到与数据库数据一致阿?

redis缓存如何做到与数据库数据一致阿?

撒科打诨 2018-08-20 14:13:43
假设数据库有一个user表,存入redis的键为users,值为Map<id,user>。如果不设置键的过期时间还可以做到。但是设置了键的过期时间后,当这个键过期了,从新把数据读到Map<id,user>中,如果这时候只读了一个user,比如{id=1,name=张三,mark=90},因为数据还没读取完,我们还没把这个map放入redis。恰好这时有人修改了张三的数据,把mark修改成90,修改的代码逻辑是先把数据库的张三mark修改为90,然后去redis修改users对应的map的张三的数据,但是redis中现在还没有users这个键。所以最后造成的结果是--->数据库中:张三的mark为90 。 redis中:张三的mark为100。这种不一致的情况该怎么解决呢?
查看完整描述

1 回答

?
MMMHUHU

TA贡献1834条经验 获得超8个赞

你往极限处想,只要是在两个地方的数据,就没有办法保证时时相同,光也是有速度的。

不要想着用缓存的优点(优点是啥?)

又没有缓存的缺点?(缺点是在系统中可以忽略或者无所谓或者可以忍受的)。

缓存是用来保存不常变动的数据,用以减轻数据库负担,如果你一直检查,一直更新的话,数据库负担一点都没有减轻,甚至更高了,你还要缓存作甚?


查看完整回答
反对 回复 2018-09-11
  • 1 回答
  • 0 关注
  • 666 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信