redis-双写一致

双写一致:当修改了数据库的数据需要更新到缓存,保证数据的一致性

如何保证双写一致?

第一种对数据的一致性要求没有非常高的情况
解决方案:
延时双删
在修改数据前,删除缓存,修改成功后再次删除缓存,由后面的线程进行缓存的更新,控制脏读的情况。
为什么需要双删?
因为一次删除会出现脏读的情况,因为线程是交替执行的,
1 先写再删,在写操作完成前,其他线程可能会获取到旧数据
2 先删再写,在写操作完成前,其他线程如果未命中缓存,获取数据库旧数据并写入到缓存,即便写操作完成,后面的线程也无法获取最新数据。

第二种要求数据强一致性
分布式锁
可以通过redisson的读写锁实现,读锁(共享锁)允许其他线程读,写锁(互斥锁)阻塞其他线程读写

第三种 允许短暂的延时
通过异步通知保证数据最终的一致性
例:mq
当数据库写入完成后通知订阅方对缓存进行更新

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值