# 缓存和数据库一致性问题

https://zhuanlan.zhihu.com/p/408515044

先更新缓存还是先删除缓存?

1. 先更新缓存,后更新数据库
数据库更新失败,相当于没更新。
2. 先更新数据库,后更新缓存
缓存更新失败,只有等到缓存失效才能得到正确的值。

并发引发的一致性问题
两个线程同时更新同一条数据,出现数据库更新成功,缓存更新失败的问题之类的。
通常解决方案是加 分布式锁 ,线程在修改同一条数据之前先申请分布式锁,拿到锁的线程才允许更新数据库和缓存。

删除缓存可以保证一致性吗

1. 先删除缓存,后更新数据库
数据库更新失败,等于没更新

2. 先更新数据库,后删除缓存
缓存删除失败,只有等到缓存失效才能得到正确的值。

未完待续

-->