缓存的三大问题,击穿,雪崩,穿透

缓存的三大问题,击穿,雪崩,穿透

缓存穿透: 指查询数据库和缓存中没有的数据

解决方案:

缓存空对象:代码简单,效果不好
布隆过滤器:代码复杂,效果好

缓存空对象:查询一条不存在的数据,不管能不能查到,都把它加到缓存

布隆过滤器:可以用于检索一个元素是否在一个集合中,它的优点就是空间效率和查询时间都比一般的算法要好的多,缺点就是有一定的误识别率和删除困难

缓存击穿:就是缓存中没有但数据库中有的数据(一般是缓存时间到期),这是由于并发用户特别多,同时读缓存没有数据,又同时到数据库中取数据,引起数据库压力瞬间增大,造成过大的压力

设置热点数据永不过期
加互斥锁

缓存雪崩:缓存中数据大批量的过期,查询数据量特别大,引起数据库压力过大甚至宕机,和缓存击穿不同的是,击穿是并发查同一条数据,雪崩是不同数据都过期了,很多数据查不到,然后去数据库中去查

解决方案

在缓存数据的过期时间设置随机,放置同一时间大批量的数据过期现象发生
如果缓存数据库是分布式部署,将热点数据均匀分布在不同的缓存数据库中
设置热点数据永不过期
posted @ 2020-07-26 15:00  小子,你摊上事了  阅读(100)  评论(0编辑  收藏  举报