ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

redis 缓存穿透,缓存击穿,缓存雪崩

2022-06-07 15:04:15  阅读:139  来源: 互联网

标签:缓存 过期 redis 访问 雪崩 key 数据


缓存穿透

当用户想到查询的key的值,在redis 中查询不到时,而这时有大量的请求访问这个key,会导致缓存没有命中,从而去访问数据库,这时会给数据库带来很大的查询压力,从而导致性能下降

解决方式

1 布隆过滤器 :布隆过滤器是一种数据结构,对所有可能查询到的参数多是以hash的方式去存储,先在控制层进行校验,不符合的话,则丢弃,这就避免了对底层存储系统的压力

2 缓存空的对象

缓存击穿

某个key在失效的瞬间,有大量的请求访问这个key,这种数据又是热点数据 ,由于当前key在缓存过期的瞬间,请求会同时访问到持久化的数据库来查询数据,并且会将数据写回缓存,此时就会导致数据库瞬间的压力过大,导致击穿

解决方式

1 将热点数据设置不过期,不设置过期时间,就不会出现热点 key 过期的瞬间造成问题

2 加锁,保证对于每一个 key ,同时只有一个服务进行访问,其他的服务没有获取到锁,就不能访问 redis 的这个 key,那么就需要等待获取锁

缓存雪崩

就是在某一个时间段,缓存集中过期,或者 redis 宕机的情况会出现

解决方式

1 将 redis 做成高可用的
  搭建 redis 集群,异地多活,既然担心 redis 会挂,那么我们就多准备一些 redis ,做成主备,或者异地多活
2 限流降级
  就是在缓存失效的时候,通过锁的方式来限制访问数据顺序,或者关掉一些不重要的服务,让资源和性能全力提供给我们的主要服务
3 做数据预热
  数据预热就是咱们在正式要上线之前,咱们就先将需要访问的数据预先访问一次,这样就可以将大量要访问数据库的数据写到缓存中
  这样就可以在即将发生的高并发访问数据前手动的触发并加载不同的 key ,且会设置不同的过期时间,主要是可以将缓存失效的事情均衡一些,这样就尽量避免掉大量的 key 集中过期的情况

标签:缓存,过期,redis,访问,雪崩,key,数据
来源: https://www.cnblogs.com/kzbn/p/16351783.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有