1.缓存击穿:高并发时,当一个key(类似于爆款),在不停扛着大并发,当这个key在失效的瞬间,持续的大并发在击破缓存,直接请求数据库并设置到缓存中,导致性能下降。
解决方案 :1.永不过期 2.加锁排队
2.缓存雪崩:缓存集中过期,或者缓存服务器宕机,导致大量请求访问数据库,造成服务器瞬间压力过大,宕机。
解决方案:1.集中过期:加锁排队和随机失效时间
2.宕机:redis高可用的部署,做好集群,哨兵模式
3.缓存穿透:数据库中不存在,缓存中也不存在,导致每次请求都会查询数据库,这时的用户很可能是攻击者,如发起id为-1的或者id特别大(不存在的数据),导致数据库压力特别大或者宕机。
解决方案:1.参数校验,缓存空对象
2.布隆过滤器