常见的redis使用缺陷场景主要有3个,分别是缓存穿透,缓存击穿,缓存雪崩。
穿透,(关键词,缓存中没有的,数据也没有)
击穿(大量同时请求过期的key)
雪崩(大批量缓存同时过期)

常用解决措施或者算法:
缓存穿透:
- 将空key添加到缓存中。
- 使用布隆过滤器过滤空key。
- 一般对于这种访问可能由于遭到攻击引起,可以对请求进行身份鉴权、数据合法行校验等。
缓存击穿:
- 添加互斥锁或分布式锁,让一个线程去访问数据库,将数据添加到缓存中后,其他线程直接从缓存中获取。
- 热点数据key不过期,定时更新缓存,但如果更新出问题会导致缓存中的数据一直为旧数据。
缓存雪崩:
- 将key的过期时间打散,避免大量key同时过期。
- 对缓存服务做高可用处理。
- 加互斥锁,同一key值只允许一个线程去访问数据库,其余线程等待写入后直接从缓存中获取。