DB和缓存双写一致性
2021/8/31 6:06:10
本文主要是介绍DB和缓存双写一致性,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
现在比较常见的缓存读写策略是这样的
写模式
在数据库层前置一道缓存,是为了减轻数据库层面的访问压力。但是同一份数据落在两个系统中,势必会造成数据一致性问题。
比如说:
有多个操作t1、t2执行同时对一份数据进行update,如果t1更新完DB以后,因为某些原因造成一瞬间的延迟,使t2更新完DB以后,先把缓存给改了,这时候t1再执行更新缓存,缓存是t1=a,数据库存的是t2=b,就引发了DB和缓存双写不一致。
无论是先更新DB,再删除缓存,或者是先删除缓存,再更新DB,都无法从根本上解决问题。在同一条时间线上的并发场景下,总会有这样那样的意外。
数据一致性是CAP理论的三大基石之一,强一致性又很难保障,追求强一致性就一定会牺牲部分可用性,所以应当考虑的是在可以容忍的范围内达到数据最终一致性
通过加分布式锁来获得强一致性的做法通常是不受人待见的。
市场上比较主流的方案:
1、延迟双删
在一个线程更新了DB,再删除缓存以后,sleep一小段时间以后再删一次。
2、读写锁。
针对读多写少的场景,读写互斥,写入的时候排队,读取的时候可以并发。这个可以考虑。
3、还有一个离谱的,监听mysql的binlog日志,投递到消息队列中,发出去再更新到缓存中。
4、定时任务,定时同步,
这篇关于DB和缓存双写一致性的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-12百万架构师第十五课:源码分析:Spring 源码分析:SpringMVC核心原理及源码分析|JavaGuide
- 2025-01-11有哪些好用的家政团队管理工具?
- 2025-01-11营销人必看的GTM五个指标
- 2025-01-11办公软件在直播电商前期筹划中的应用与推荐
- 2025-01-11提升组织效率:上级管理者如何优化跨部门任务分配
- 2025-01-11酒店精细化运营背后的协同工具支持
- 2025-01-11跨境电商选品全攻略:工具使用、市场数据与选品策略
- 2025-01-11数据驱动酒店管理:在线工具的核心价值解析
- 2025-01-11cursor试用出现:Too many free trial accounts used on this machine 的解决方法
- 2025-01-11百万架构师第十四课:源码分析:Spring 源码分析:深入分析IOC那些鲜为人知的细节|JavaGuide