目录
一、概念
1.缓存击穿
突发热点访问时,热点数据在Redis缓存中不存在或已过期。大量的对热点数据的访问,都将直接访问数据库,造成数据库访问压力短时激,从而增造成故障。
2.缓存穿透
数据在Redis缓存和数据库中都不存在。大量访问这种数据时,数据库频繁查找数据,造成压力过大,从而产生故障。应用场景: 壹:非正常数据访问;贰:黑客攻击。
3.缓存雪崩
大量key集中过期,数据库短时访问量激增。类似击穿的发生场景。
二、解决方案
1.解决缓存击穿
- 提前预设热门缓存数据
- 实时调整过期时间、自动续期
- 使用锁
- 缓存数据不存在时,把数据库数据放入缓存
2.解决缓存穿透
- 对不存在的数据进行数据空值缓存
- 设置白名单;(•可访问的数据id作为偏移值存入bitmaps;•访问时先检查bitmaps)
- 使用布隆过滤器
- 对黑客攻击进行实时监控
3.解决缓存雪崩
- 多级缓存架构(Nginx-本地缓存(ehcache/guava) -Redis)
- 锁或队列对并发访问进行序列化
- Key设置过期标志,对即将过期数据进行提前更新,自动续期(类似击穿的解决方案)
- 数据的过期时间使用随机值,分散过期时间
本文含有隐藏内容,请 开通VIP 后查看