双写一致性;缓存与数据库一致性问题;

双写一致性

即,缓存和数据库的数据保持一致
结合查询的资料简单的对双写进行分析总结。

1 先更新缓存,后更新数据库

不推荐。
产生的问题:缓存一般不支持事务回滚,或设计回滚代价较高,当更新数据库遇错回滚,缓存无法进行相同的操作。

2 先更新数据库,后更新缓存

不推荐。
产生的问题:线程A、线程B修改数据库,由于网络原因,B先于A修改了缓存,导致数据库与缓存不一致。

3 先删缓存,后更新数据库

不推荐。
一般情况下,数据库的写操作要慢于读操作
产生的问题:线程A删缓存,线程B读缓存时无数据,查数据库,
线程A修改数据库,线程B将旧值缓存,此时数据库与缓存不一致。

先删缓存,后更新数据库,再删缓存
不推荐。
高并发下
产生问题:线程A删缓存,线程B读缓存时无数据,查数据库,线程A修改数据库,删除缓存,
线程B将旧值缓存。

先删缓存,后更新数据库,延时,再删缓存 (延时双删)
可用, 过程:线程A删缓存,线程B读缓存时无数据,查数据库,线程A修改数据库,延时一定时间,在这段时间内
线程B将旧值缓存,线程A删除缓存。要合理控制延时时间。

4 先更新数据库,后删除缓存

推荐。
可能出现的问题:缓存失效,线程B查库获取旧值,线程A修改数据库,线程A删缓存,线程B缓存旧值。
仍然可以使用延时双删解决可能出现的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值