迹忆客 计算机编程题库

Redis 经典面试题

简述缓存雪崩产生的原因,并且给出解决方案

解析:

首先我们说一下什么是缓存雪崩。我们都知道,Redis缓存的数据都是有过期时间的,也就是说一定时间之后,Redis中的数据就失效了。

下面我们举个例子来说明一下什么是缓存雪崩

如果所有题目的Key失效时间都是12个小时,早上8点刷新的。我们的系统在晚上8点的时候有个测试,会有大量的用户涌入进来。但是缓存当时所有的Key都失效了。此时这大量的请求全部都到了数据库上,数据库必然扛不住。作为反抗,它会报警,很多情况可能DBA都没反应过来就直接挂了。此时,如果没用什么特别的方案来处理这个故障,DBA 很着急,只能重启数据库,但是数据库立马又被新的流量给弄挂了。这就是缓存雪崩。

通过上面的例子,我们知道很多情况下是由于我们设置的Redis的key都在同一时间或者集中的那段时间失效了,导致所有的请求都到了数据库上。

知道了产生雪崩的原因,要解决这个问题就比较简单了。

在批量往Redis存数据的时候,把每个Key的失效时间都加个随机值就好了,这样可以保证数据不会在同一时间大面积失效。

如果Redis是集群部署,将热点数据均匀分布在不同的Redis库中也能避免全部失效的问题。或者设置热点数据永远不过期,有更新操作就更新缓存就好了

查看笔记

扫码一下
查看教程更方便