1、更新操作
https://coolshell.cn/articles/17416.html
不可以先删除缓存,再更新数据库。 因为并发操作下, 一个更新操作删掉了缓存, 此时一个读操作进来,读取了旧数据,并且添加到缓存(读速度大于更新)。 那么脏数据就一直脏下去了。
正确做法是 更新数据库,再删掉缓存
2、缓存穿透:查询一个必然不存在的数据。比如文章表,查询一个不存在的id,每次都会访问DB,如果有人恶意破坏,很可能直接对DB造成影响。 因此对于数据库查询不到的key,应该也在缓存中插入值, 避免被恶意攻击。
3、缓存失效:过期或者LRU换出。 问题:如果缓存集中在一段时间内失效,DB的压力凸显。这个没有完美解决办法,但可以分析用户行为,尽量让失效时间点均匀分布。
4、缓存雪崩: 大量的缓存失效,导致请求打到db