缓存一致性
1.更新数据库后更新缓存
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/6ffaff4a1cbb69e815c066f5c35ee5eb.png)
2.更新数据库前更新缓存
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/e21994d18af76409c8e97bf98e48e59b.png)
3.更新数据库前删除缓存
正常策略
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/c08c8411fd596b771be0e0960845e0cf.png)
延迟策略
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/b06b6763ff6211f40ed218643a81ba7d.png)
4.更新数据库后删除缓存
场景1
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/ba59afd8b2cb9241e89232ea55322203.png)
场景2
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/d35cbc52416c2bdc10f1f5d2dcdcdd58.png)
5.解决方法
1.MQ中间件
把更新缓存的操作以 MQ 消息的方式发送出去,由不同的系统或者专门的一个系统进行订阅,而做聚合的操作。不同业务系统订阅 MQ 消息单独维护各自的缓存 Key,专门更新缓存的服务订阅 MQ 消息维护所有相关 Key 的缓存操作。
2.订阅MySQL binlog
利用 binlog 表监听及时发现,发现后就能集中处理,而且无论是在什么系统什么位置去更新数据,都能做到集中处理。