这篇文章主要介绍“怎么解决redis雪崩和穿透”,在日常操作中,相信很多人在怎么解决redis雪崩和穿透问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么解决redis雪崩和穿透”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

解决方法是:1、缓存穿透,可以把空的数据也缓存起来和使用布隆过滤器;2、缓存雪崩,可以设置对应热点key永不过期,多缓存结合,采购第三方Redis,以及过期时间错开,过期时间使用随机生成即可。

本教程操作环境:windows7系统、Redis5.0.10版、DELL G3电脑。

Redis缓存穿透以及解决方法

一、缓存穿透1.当用户查询的key在redis中不存在,对应的id在数据库也不存在,此时被非法用户进行攻击,大量的请求会直接打在db上,造成宕机,从而影响整个系统,这种现象称之为缓存穿透。2.解决方案一:把空的数据也缓存起来,比如空字符串,空对象,空数组或list,代码如下
if (list != null && list.size() > 0) {redisOperator.set("subCat:" + rootCatId, JsonUtils.objectToJson(list));
} else {redisOperator.set("subCat:" + rootCatId, JsonUtils.objectToJson(list), 5*60);
}

3.解决方案二:布隆过滤器

布隆过滤器:判断一个元素是否在一个数组里面,如下图,利用二进制去做的一个存储,占用内存比较小,0 代表不存在,1 代表存在,添加查询效率很快,当保存了一个数值会经过一个算法将对应的值保存到布隆过滤器的集合上的某个位置,某个位置上可能会存在多个key,当传进来一个不存在的key值,和集合进行匹配,如果匹配不上便会返回一个null

缺点:1、1%的误判率,当有一个key不存在布隆数组中,但是由于这个误判率,在某个情况下回判断这个key存在,当这个数组越长误判率越低,数组越短误判率越高

2、当我们要删除某个key值的时候,是会删除我们的数据库和redis中的内容,但是布隆数组中无法删除,因为数组的某个位置上会存在对个key如果我们要删除的话就是将1变成0,但是会将其中所有的key值都删除

3.代码复杂度也会增加,因为我们要额外去维护一个集合,当我们使用redis集群,布隆过滤器要和redis结合在一起使用

二、Redis缓存雪崩

1.缓存雪崩:缓存中的数据大批量失效,然后这个使用又要大量的请求进来,但是由于redis中的key全部失效了所有会全部请求到db上,造成宕机

2.解决方案

设置对应热点key永不过期
过期时间错开,过期时间使用随机生成,并且热点数据的过期时间设置的长一点,非热点数据可以设置短一点
多缓存结合,例如:请求进入,可以现请求redis,当redis中不存在的时候再去请求memcache,如果都没有再去请求db
采购第三方Redis(阿里云或者腾讯云上的redis)

到此,关于“怎么解决redis雪崩和穿透”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识请继续关注,小编会继续努力为大家带来更多实用的文章!

怎么解决redis雪崩和穿透相关推荐

  1. 高并发架构系列:如何解决Redis雪崩、穿透、并发等5大难题

    别人用手机刷新闻.刷段子,你用手机刷知识.你会的越多,成功率就越高. 本篇分享大型网站高并发架构设计是如何解决Redis雪崩.穿透.并发等5大难题的,以下,enjoy~ 缓存雪崩 数据未加载到缓存中, ...

  2. 面试精讲之面试考点及大厂真题 - 分布式专栏 10 Redis雪崩,穿透,击穿三连问

    10 Redis雪崩,穿透,击穿三连问 能够生存下来的物种,并不是那些最强壮的,也不是那些最聪明的,而是那些对变化作出快速反应的. --达尔文 引言 关于Redis雪崩,穿透,击穿的问题,第一次接触名 ...

  3. redis雪崩、穿透、击穿

    文章目录 前言 缓存雪崩 缓存穿透 缓存击穿 传送门 前言 redis服务雪崩.穿透.击穿 缓存雪崩 缓存雪崩表示在某一时间段,缓存集中失效,导致请求全部进入数据库,过量请求拖垮数据库,使整个服务崩溃 ...

  4. redis雪崩、穿透、击穿、热点分别代表什么意思?

    redis雪崩: redis中的key设置里相同的过期时间,导致多个key数据同时过期,客户端读请求,在redis缓存中找不到数据,就会访问数据库,在数据库中找,造成数据库访问压力过大.举个栗子:某佳 ...

  5. redis 雪崩 击穿 穿透

    雪崩,redis大面积key失效,导致大量请求落到了DB上 击穿,单一key失效,导致大量请求落到DB上 穿透,redis与DB中都没有这个key,导致穿透

  6. Redis总结以及击穿,雪崩,缓存穿透,哨兵机制解答

    Redis Redis是什么? Redis 是一个使用 C 语言开发的高速缓存数据库. Redis进行数据库切换命令 SELECT  index   数据库索引号index用数字值指定,以0作为起始索 ...

  7. java雪崩_【并发编程】java 如何解决redis缓存穿透、缓存雪崩(高性能示例代码)...

    [并发编程]java 如何解决redis缓存穿透.缓存雪崩(高性能示例代码) 发布时间:2018-11-22 16:48, 浏览次数:872 , 标签: java redis <>缓存穿透 ...

  8. redis缓存雪崩、穿透、击穿概念、布隆过滤器小结及解决办法

    判存业务 redis缓存雪崩.穿透.击穿概念及解决办法 什么是 概念: 1.缓存雪崩 对于系统 A,假设每天高峰期每秒 5000 个请求,本来缓存在高峰期可以扛住每秒 4000 个请求,但是缓存机器意 ...

  9. Redis专题-缓存穿透、缓存雪崩、缓存击穿

    一.缓存穿透 缓存穿透概念 缓存穿透是指查询一个一定不存在的数据,在数据库没有,自然在缓存中也不会有.导致用户查询的时候,在缓存中找不到对应key的value,每次都要去数据库再查询一遍,如果从存储层 ...

  10. Redis面试 - redis 的雪崩和穿透?

    Redis面试 - redis 的雪崩和穿透? 面试题 了解什么是 redis 的雪崩和穿透?redis 崩溃之后会怎么样?系统该如何应对这种情况?如何处理 redis 的穿透? 面试官心理分析 其实 ...

最新文章

  1. 腾讯获赔 475 万!首例“微信自动抢红包”不正当竞争案宣判
  2. Maven项目中引入spring-test单元测试 @RunWith与@ContextConfigration报错
  3. XML学习笔记(二)-- DTD格式规范
  4. Oracle新建实例后,修改sys和system密码。
  5. Hadoop 02_初学必知
  6. 手机站点击商务通无轨迹解决方法
  7. python基础函数式编程(十七)
  8. Zookeeper及客户端的基本操作
  9. multipartfile获取数据_详解SpringMVC使用MultipartFile实现文件的上传
  10. java list 包含字符串_Java8实战:查找列表中包含的字符串
  11. 公路自行车入门级推荐java_开学季:9款值得买公路车推荐
  12. 《惢客创业日记》2019.01.23(周三) 太苦涩的人生也会让人麻木
  13. Java输入时间输出热量卡路里的小程序
  14. aardio java_图形界面Aardio
  15. robot_localization中EKF源码介绍
  16. NavigationController
  17. 深圳MPD大会 讲师演讲稿 2014-10
  18. excel时间戳转换为时间格式
  19. bpmn不带网关的流程
  20. 美发明家脑洞大开 预测十几年后电脑会产生感情

热门文章

  1. 前端学习——页面布局
  2. 如何对萤石云视频解码
  3. 利用gflags自定义标志的使用方法
  4. 手机扫码枪app,二维码识别,二维码信息自动推送至电脑的(Excel,软件,记事本)等位置。
  5. 计算机需要无线网卡进行网络连,usb无线网卡怎么用详细步骤
  6. windows server 驱动精灵_win10网络重置后,无线网卡驱动消失的解决办法
  7. 实习(光条中心提取,灰度重心法)
  8. Micro USB 引脚定义及OTG (USB-HOST) 接线
  9. IDEA 运行 Tomcat 中文乱码的问题
  10. 打开本地计算机策略,win7本地组策略打开方法介绍