加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 创业 > 正文

5个方案辅佐你:高并发情形下,先操纵数据库照旧先操纵缓存?

发布时间:2021-05-31 06:12:41 所属栏目:创业 来源:互联网
导读:1)线程A提倡一个写操纵,第一步set cache 2)线程A第二步写入新数据到DB 3)线程B提倡一个写操纵,set cache, 4)线程B第二步写入新数据到DB 这样看,也没啥问

1)线程A提倡一个写操纵,第一步set cache

2)线程A第二步写入新数据到DB

3)线程B提倡一个写操纵,set cache,

4)线程B第二步写入新数据到DB

这样看,也没啥题目。,可是偶然辰也许事与愿违,我们再看第二个流程图,如下

1)线程A提倡一个写操纵,第一步set cache

2)线程B提倡一个写操纵,第一步setcache

3)线程B写入数据库到DB

4)线程A写入数据库到DB

执行完后,缓存生涯的是B操纵后的数据,数据库是A操纵后的数据,缓存和数据库数据纷歧致。

缓存维护方案三

一写(线程A)一读(线程B)操纵,先操纵数据库,再操纵缓存。

1)线程A提倡一个写操纵,第一步write DB

2)线程A第二步del cache

3)线程B提倡一个读操纵,cache miss

4)线程B从DB获取最新数据

5)线程B同时set cache

这种方案没有明明的并发题目,可是有也许步调二删除缓存失败,固然概率较量小,优于方案一和方案二,平常事变中也是行使方案三。

综上比拟,我们一样平常回收方案三,可是有没有美满全办理方案三的破绽的要领呢?

缓存维护方案四

这个是方案三的改造方案,都是先操纵数据库再操纵缓存,我们来看一下贱程图

通过数据库的binlog来异步裁减key,以mysql为例,可以行使阿里的canal将binlog日记收罗发送到MQ行列内里,然后通过ACK机制确认处理赏罚 这条更新动静,删除缓存,担保数据缓存同等性。

可是呢尚有个题目,假如是主从数据库呢?

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读