Redis的三大缓存问题也就是缓存击穿、缓存雪崩和缓存穿透,在生产环境中会因为这些原因造成请求绕过了Redis直接访问数据库,使得数据库的负载增大,这样不仅导致缓存的作用降低,甚至引发数据库压力过大而崩溃进而蔓延到整个系统无法使用。下面我们来聊聊Redis缓存的三大问题与解决方案。
1、缓存雪崩
缓存雪崩指的是由于Redis里面同一时间出现了多个key同时失效,导致大量请求直接访问数据库,瞬间引发数据库压力激增,甚至导致数据库崩溃,如下图所示:
解决方案:
(1)将Redis进行高可用的架构部署(主从+哨兵、集群),避免Redis出现全盘崩溃宕机的情况。
(2)使用本地缓存、Histrix限流降级、Nginx IP限流等等方法,避免Mysql被大流量冲垮,同时在缓存不可用时可以返回一些默认值或者降级的数据。
(3)针对于Redis里面的key设置一个合理的过期时间(如缓存的过期时间为随机值),避免大量的key同时失效。
2、缓存击穿
缓存击穿是指某个热点数据A在缓存中失效的瞬间,此时又有大量的并发请求同时访问该数据A,由于数据A在缓存中失效,大量请求同时访问数据库,造成数据库压力骤增。这种情况通常发生在热点数据或访问频繁的数据上,如下如图所示的
扫描二维码关注公众号,回复:
17585404 查看本文章
