缓存和数据库双写的策略

本文探讨了缓存和数据库双写的四种策略,包括先更新数据库后更新缓存、先更新缓存后更新数据库、先删缓存后更新数据库、先更新数据库后删除缓存,分析了每种策略在高并发场景下可能存在的数据不一致问题,并提出了相应的解决方案,如串行化操作、延迟双删策略和基于消息队列的重试机制。
摘要由CSDN通过智能技术生成

缓存和数据库双写的策略

 

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

先更新数据库,后更新缓存,存在的问题在于有些业务需求中缓存的值不是简单的从数据库读取后就能存放进去的,有时需要进行一些业务的计算后,才将最终的结果存放缓存。况且针对写多读少的场景,如果更新10次数据库,就要更新缓存10次,但是在一定的时间内就只读1次,这样就会产生大量的冷数据,影响性能。因此,不推荐使用这种。

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

类似情况1,不推荐使用。

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

 

单线程下先删除缓存后更新数据库,是不会产生缓存与数据库双写不一致的现象。但是在高并发场景下,线程A在执行删除缓存、更新数据库的过程中,线程B执行读操作,发现缓存的值已经被删除,那么线程B会去读取数据库,如果此时线程A更新数据库的操作还没执行完,线程B读到了旧的值放入缓存,并返回,这样就产生了数据库与缓存数据不一致的现象。

解决思路1:串行化数据库与缓存的读写操作(强一致性)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值