缓存击穿、缓存穿透、缓存雪崩是什么以及对应的解决方案

缓存击穿、缓存穿透、缓存雪崩是什么以及对应的解决方案
缓存击穿原因当缓存的某个热点数据过期时十几万请求同时涌向数据库造成数据库压力剧增甚至崩溃解决方案加redis分布式锁那么当十几万请求线程同时访问数据库时只有获取分布式锁的那个请求线程可以去访问数据库其余线程阻塞等待当获取分布式锁的线程从数据库查询到数据并缓存数据到缓存时其余线程可以直接读取缓存。redis分布式锁还有一些其他重要用途比如锁住商品库存等缓存穿透原因无效key是造成缓存穿透的根本原因一些请求故意使用无效key查询缓存缓存没有而直接去查寻数据库解决方案即使数据库没有也在缓存中缓存个“null”防止恶意攻击。不是最佳方案缓存雪崩原因批量缓存数据同时过期所有请求冲向数据库数据库被直接压垮解决方案设置随机过期时间给过期时间加一个随机偏移量搭建高可用的redis集群熔断与限流在网关层如 Sentinel、Hystrix做限流。当检测到数据库压力过大时直接拒绝部分请求返回“系统繁忙请稍后重试”。