旁路缓存模式:实现简单,但是要维护数据库和缓存两个存储数据存储
读写穿透模式,实现比较复杂,要多维护一个缓存服务(cache provider)
读写异步模式,实现比较复杂,有数据不一致问题,但是性能好...因此我们就可以在删除的时候重复删除,当我们删除失败的时候,我们可以把删除的key放入到消息队列中,然后消费消息队列的key,直到删除操作成功,
取binlog异步删除缓存,使用消息队列虽然可以,但是他会浸入我们的业务逻辑...,
有人就可能问,如果是主从数据库呢,主备的操作可能有一定的延迟,数据可能还没有到从库,读请求就到达了从库,从而获取到了旧值,因此我们可以使用从库进行binlog采集,从而达到删除缓存的效果,如下图...读出缓存是否有数据
如果有,直接返回
如果没有,则从数据库获取,再更新缓存,然后返回
是更新操作,先更新数据库,再删除缓存
为了保证上一步删除成功,采用binlog异步删除
如果是主从数据库,则使用从库采集...binlog异步删除
如果是一主多从,采集所有的从库,可以收到一条消息,删除一次,也可以收到最后一台机器的binlog,再进行删除