redis之缓存雪崩

55 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 13 天,点击查看活动详情

前言

在前一天的文章里面,我讲了缓存穿透代表着缓冲层不起作用了,每次请求都要查询持久层,缓存层的意义就没有了。那缓存雪崩代表的意义是什么呢?我将会在下面的文章一一解释。

什么是缓存雪崩

首先来说明什么是缓存雪崩,我们设想一下这样一个场景。我的redis的key突然大量失效(运气不好都到过期时间)。然后这个时候又恰好搞一些限时活动,用户的请求在缓冲层都找不到,这时就要去持久层找,这时大量的请求到达数据库,给数据库带来了巨大的压力。又或者redis服务突然宕机,也会造成这个情况。

解决方法

给key设置不一样的过期时间

这个方法要求我们之前对key的失效时间不能都设置成一样的,我们要在对应的时间上给其增加一到五分钟。这样就不会在同一时间过期给持久层很大压力了。

主从模式

上面方法是比较简单。可是无法应对当redis服务器宕机了要怎么办。这里我们可以采用主从模式即部署多态redis服务器,然后为其中一台为主redis服务器(master),其他的服务器都为slave,master下面挂着slave,然后就像图上的masterredis服务器是做所有操作的,但是slave只做读操作,然后由master服务器的数据同步到slave。当master发生故障时客户端就可以直接去slave暂时性获取数据。这只是一种最简单的主从结构,剩下的下次再做介绍

image.png

其他方法

这些方法也是十分有效的方法给缓存业务添加降级限流策略 给业务添加多级缓存。大家可自行查询,这里不过多解释。