1. 9IM首页
  2. 热点

解决Redis缓存穿透丶缓存击穿丶缓存雪崩问题

解决Redis缓存穿透问题

Redis 缓存穿透指的是攻击者故意大量请求一些Redis缓存中不存在key的数据,导致请 求打到数据库上,导致数据库压力过大。

解决方案如下:

1.做好参数校验,无效的请求直接返回,只能避免一部分情况,攻击者总是可以找到一些没有覆盖的情况。

2.对缓存中找不到的key,需要去数据库查找的key,缓存到Redis中,但是可能会导致Redis中缓存大量无效的key,可以设置一个很短的过期时间,例如1分钟。

3.也可以使用布隆过滤器,将所有可能的存在的数据通过去hash值的方式存入到一个足够大的bitmap中去,处理请求时,通过在botmap中查找,可以将不存在的数据拦截掉。

解决Redis缓存击穿问题

缓存击穿主要指的是某个key失效,导致大量请求全部转向数据库,导致数据库压力过大。

解决方案:

1.对热点key设置永不过期。

2.加互斥锁,缓存中没有热点key对应的数据时,等待100ms,由获得锁的线程去读取数据库然后设置缓存。

解决Redis缓存雪崩问题

缓存雪崩主要指的是短时间内大量key失效,导致所有请求全部转向数据库,导致数据库压力过大。

解决方案:

1.在给缓存设置失效时间时加一个随机值,避免集体失效。

2.双缓存机制,缓存A的失效时间为20分钟,缓存B没有失效时间,从缓存A读取数据,缓存A中没有时,去缓存B中读取数据,并且启动一个异 3.步线程来更新缓存A。

原创文章,作者:9IM,如若转载,请注明出处:https://www.9im.cn/603.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注