站长资讯网
最全最丰富的资讯网站

如何解决Redis缓存雪崩、击穿与穿透

本篇文章给大家带来了关于Redis的相关知识,其中主要介绍了关于怎么解决redis缓存雪崩、击穿与穿透的相关问题,缓存雪崩是指大量的请求无法命中Redis中的缓存数据,也就是在Redis找不到数据了;下面一起来看一下,希望对大家有帮助。

如何解决Redis缓存雪崩、击穿与穿透

千万级数据并发如何处理?进入学习

推荐学习:Redis视频教程

一、缓存雪崩

1. 什么是缓存雪崩?

缓存雪崩是指大量的请求无法命中Redis中的缓存数据,也就是在Redis找不到数据了,那业务系统只能到数据库中查询,进而导致所有的请求都发送到了数据库。如下图所示:

如何解决Redis缓存雪崩、击穿与穿透

数据库并不像Redis能处理大量请求,由缓存雪崩导致的请求激增必须会导致数据库所在宕机,这样势必会影响业务系统,所以如果发生缓存雪崩,对于业务系统肯定是致命的。

2. 为什么发会生缓存雪崩?

什么情况下出现缓存雪崩呢?总结起来有以下两个方面的原因:

  • 大量Redis缓存数据同时过期,导致所有的发送到Redis请求都无法命中数据,只能到数据库中进行查询。

  • Redis服务器宕机,所有请求都无法经Redis来处理,只能转向数据库查询数据。

3. 如何避免缓存雪崩?

针对导致缓存雪崩的原因,有不同的解决方法:

  • 针对大量缓存随机过期时间,解决方法就是在原始过期时间的基础上,再加一个随机过期时间,比如1到5分钟之间的随机过期时间,这样可以避免大量的缓存数据在同一时间过期。

  • 而针对Redis解决宕机的导致的缓存雪崩,可以提前搭建好Redis的主从服务器进行数据同步,并配置哨兵机制,这样在Redis服务器因为宕机而无法提供服务时,可以由哨兵将Redis从服务器设置为主服务器,继续提供服务。

二、缓存击穿

1. 什么是缓存击穿

缓存击穿与缓存雪崩的情况相似,雪崩是因为大量的数据过期,而缓存击穿则是指热点数据过期,所有针对热点数据的请求都需要到数据库中进行处理,如下图所示:

如何解决Redis缓存雪崩、击穿与穿透

2. 怎么避免缓存击穿?

解决缓存击穿的三种方式:

  • 不设置过期时间

如果我们能提前知道某个数据是热点数据,那么就可以不设置这些数据的过期,从而避免缓存击穿问题,比如一些秒杀活动的商品,在秒杀时会大量用户访问,这时候我们就可以将这些用于秒杀的商品数据提前写入缓存并且不设置过期时间。

  • 互斥锁

提前知道某些数据会有大量访问,我们当然可以设置不过期,但

赞(0)
分享到: 更多 (0)
网站地图   沪ICP备18035694号-2    沪公网安备31011702889846号