redis:雪崩,穿透,击穿
雪崩:同一时间key大面积失效(多出现在定时任务刷新时)
处理方案:
1,把每个key的失效时间都加一个随机值
2,设置热点数据永不过期,有更新操作就更新缓存
3,如果时集群,将热点数据均匀分布在不同的redis库仲
穿透:缓存和数据库仲都没有的数据时,用户不断的发起请求
处理方案:
1,在接口层增加数据的校验,不合法参数直接return
2,缓存和数据库总都没有数据,可以将key的value初始化默认值放入缓存中,缓存过期时间设置短些
3,布隆过滤器。原理:利用高效的数据结构和算法快速判断出你这个key是否在数据库中存在,不存在return就可以了。存在,查数据库,刷新缓存,在return
击穿:指一个热点key突然失效
处理方案:
1,设置热点数据永不过期,有更新操作就更新缓存
2,加互斥锁(当key失效时,只能由一个线程访问,其他线程等待)
(小民才疏学浅,如有错误以及不足,欢迎留言指正完善)