解决缓存一致性问题的几种方式

缓存一致性问题
缓存的实时同步,这种数据同步是增量、主动、强一致性
1、对数据库数据进行更新的时候淘汰缓存
2、读取数据的时候更新缓存,为了避免缓存击穿带来的雪崩问题我们需要做同步处理,控制只有一个线程去读取数据然后更新到缓存,其他线程被阻塞等待
3、设置缓存失效时间,假设更新缓存失败,这个缓存失效时间一到就会把缓存失效
在这里插入图片描述数据准时同步
这种同步是增量、被动、准一致性
对数据进行更新操作时在更新数据库后发送一个MQ消息(如果要保证数据不丢失,可以建立本地一个消息表在发送MQ失败后可以重试)

缓存更新服务消费MQ更新数据消息后读取数据库数据进行相关业务处理

缓存更新服务更新业务处理结果数据到缓存中
数据准时同步
任务调度更新
通过分布式调度任务进行定时更新缓存,使用场景:报表统计数据、对账数据定时更新到缓存等实时性要求不高的场景
在这里插入图片描述

binlog 日志订阅
通过订阅binlog来更新缓存,把我们搭建的消费服务,作为mysql的一个slave,订阅binlog,解析出更新内容,再更新到缓存这种日志订阅方式在mysql压力比较小的情况下,延时比较低和业务完全解耦,缺点要单独搭建同步服务成本比较大

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值