缓存穿透
查询的数据在缓存服务器(Redis)中没有,就绕过缓存服务器 直接与数据库进行IO交互,对服务器造成巨大压力
解决方案: 查询数据在redis如果没有,就将该数据设置为null放在redis中 防止暴力攻击
或者使用布隆过滤器
本质上布隆过滤器是一种数据结构,比较巧妙的概率型数据结构(probabilistic data structure),特点是高效地插入和查询,可以用来告诉你 “某样东西一定不存在或者可能存在”。
相比于传统的 List、Set、Map 等数据结构,它更高效、占用空间更少,但是缺点是其返回的结果是概率性的,而不是确切的。
缓存雪崩
缓存雪崩是指缓存中大量的数据到期,而查询数据巨大 造成数据库压力过大甚至宕机
缓存雪崩是很多数据因为过期了所以查不到 因此去向数据库查
解决方法: 物品分类 采用随机因子 使大量数据不会同一时间过期,让数据过期错开来
缓存击穿
缓存击穿 是 指“爆款” 缓存中没有该数据数据库中有该数据(或者说在缓存中刚过期) 大量并发用户去数据库进行交互,造成数据库压力过大。
解决方案: 1、设置热点数据永不过期
2、加互斥锁