常见的两种方式,在高并发下都会出现缓存一致性问题
image.png

image.png

解决方案

要求所有缓存都设置失效时间,如果业务允许暂时的不一致性则可以不用处理,如果业务要求强一致性可以使用以下方式之一

1. 分布式读写锁

优点:处理步骤简单
缺点:加锁影响插入与修改呑吐量

2. canal

canal 是阿里开源的 mysql 中间件,原理是订阅 mysql binlog,再去更新 redis
优点:统一处理缓存,编写一次多处受益
缺点:增加系统复杂度,需要引入一个新的中间件
image.png