缓存一致性问题
根据业务场景做选择吧,我目前了解的就五种做法
如果要是强一致性的话,那就是加分布式锁,但你引入锁了,性能就很低。这就很矛盾,毕竟你引入缓存是来提升性能的
无锁只能尽可能地保证一样,AP模式
同步双写
进行操作更新时,同时操作mysql or redis 。业务用得最多的方案了,适合单机。
mq异步多写
适合多机redis

定时任务

- db做逻辑删除和updateTime处理
- db做而是让定时任务扫描最近变动的数据,然后批量删除key
效率高,但时延时最高的
闪电缓存
- 缓存过期时间设置很短
- 只更新db,让缓存自己过期
时延性也还好,看你缓存过期时间的设置,
不过就是给数据库增加了压力
bin log监听

- 用flink-cdc or canal(阿里已经停止维护了)监听mysql的bin log
- 解析bin log
好处就是时延低,坏处就是成本高
旁路缓存+延迟双删
删完后,隔一段时间再删一次,但间隔时间很难确定
只存在理论
- 啥时候删,这东西很难确定
- 高并发不管用,你把缓存删了,然后你让数据库抗高并发