Redis和MySQL如何保证一致性

Redis和MySQL如何保证一致性。小编来告诉你更多相关信息。Redis和MySQL如何保证一致性网小编为你介绍Redis和MySQL如何保证一致性的相关介绍,接下来带大家一起了解。可以采用「先更

Redis和MySQL如何保证一致性。小编来告诉你更多相关信息。

Redis和MySQL如何保证一致性

网小编为你介绍Redis和MySQL如何保证一致性的相关介绍,接下来带大家一起了解。

可以采用「先更新数据库,再删除缓存」的更新策略+过期时间来兜底。

我们用「读 + 写」请求的并发的场景来分析。

假如某个用户数据在缓存中不存在,请求 A 读取数据时从数据库中查询到年龄为 20,在未写入缓存中时另一个请求 B 更新数据。

它更新数据库中的年龄为 21,并且清空缓存。这时请求 A 把从数据库中读到的年龄为 20 的数据写入到缓存中。

Redis和MySQL如何保证一致性

最终,该用户年龄在缓存中是 20(旧值),在数据库中是 21(新值),缓存和数据库数据不一致。

从上面的理论上分析,先更新数据库,再删除缓存也是会出现数据不一致性的问题,但是在实际中,这个问题出现的概率并不高

因为缓存的写入通常要远远快于数据库的写入,所以在实际中很难出现请求 B 已经更新了数据库并且删除了缓存,请求 A 才更新完缓存的情况。

而一旦请求 A 早于请求 B 删除缓存之前更新了缓存,那么接下来的请求就会因为缓存不命中而从数据库中重新读取数据,所以不会出现这种不一致的情况。

所以,「先更新数据库 + 再删除缓存」的方案,是可以保证数据一致性的

而且为了确保万无一失,还给缓存数据加上了「过期时间」,就算在这期间存在缓存数据不一致,有过期时间来兜底,这样也能达到最终一致。

上述就是Redis和MySQL如何保证一致性的技术经验小知识,以上内容供大家学习了解!

本文内容由互联网用户自发贡献,该文观点仅代表作者本人,本站仅供展示。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 97552693@qq.com 举报,一经查实,本站将立刻删除。

给TA打赏
共{{data.count}}人
人已打赏
投稿

实际工作中哪里用到了自定义注解的方法

2024-2-5 15:33:55

投稿

暗黑破坏神2装备库怎么使用(附暗黑2装备一览表)

2024-2-5 15:33:57

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索