数据库与缓存更新一致性四种策略

更新策略 存在问题
先更新数据库,再更新缓存

1、更新缓存的时候失败了(或者更新的时候晚了被其他线程读取到的还是旧值),导致缓存中存的一直都是脏数据;

2、多个线程在更新时,因为两个更新步骤执行顺序不一致,可能会导致数据错乱

先更新缓存,再更新数据库

1、不太推荐,业务上一般把mysql最后保障

2、多线程环境下,A、B两个线程有快有慢,最后可能导致缓存与数据库不一致;

先删除缓存,再更新数据库

1、多线程下,A还没更新完数据库;B进来查缓存没查到,就会读取数据库的旧值写入缓存(延迟双删:可以等一会再删除一遍缓存)

2、删了缓存假如这个时候流量激增查询这个key,会导致缓存击穿数据库

先更新数据库,再删除缓存(推荐 假如删除失败或者来不及,就会被其他线程读取到旧值(存在一定时间数据不一致但是会保证最终一致性)

1、先更新数据库,再更新缓存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值