旁路缓存模式:实现简单,但是要维护数据库和缓存两个存储数据存储
读写穿透模式,实现比较复杂,要多维护一个缓存服务(cache provider)
读写异步模式,实现比较复杂,有数据不一致问题,但是性能好...三.如何解决数据不一致
基本上使用Cache-Aside Pattern模式可以解决大部分场景,但是我们其实还可以优化,达到弱一致性,以及最终一致性的效果
延时双删策略
删除缓存重试机制
读取binlog...异步删除缓存
延迟双删策略,先删除缓存,再更新数据库,然后等待1秒,再次删除缓存,这个等待时间要根据业务处理时间适当调整,这样就是为了读请求带来的脏数据,可以再第二次删除掉,清除脏数据
删除缓存重试机制...,然后消费消息队列的key,直到删除操作成功,
取binlog异步删除缓存,使用消息队列虽然可以,但是他会浸入我们的业务逻辑,因此我们可以采用binlog日志进行解耦重复删除,如下图
我们可以使用某种机制采集数据库的...binlog异步删除
如果是一主多从,采集所有的从库,可以收到一条消息,删除一次,也可以收到最后一台机器的binlog,再进行删除