范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

面试官Redis中的缓冲区了解吗

  hello 大家好,我是七淅(xī)。
  Redis 大家肯定不陌生,但在使用层面看不到的地方,就容易被忽略。今天想和大家分享的内容是  Redis 各个缓冲区的作用、溢出的后果及优化方向 。
  在开始正文前,想多叨叨几句。不管是 Redis 还是其他中间件,底层很多原理都是相似的,设计思想都是通用的。
  大家以后如果在学什么新框架/组件,可以尽量和已经学过的知识点进行联想,这样会更容易理解点的,不至于说死记硬背。
  比如现在说到的缓冲区,它的目的是什么呢?
  无它,为了性能。
  要么缓存数据, 提高响应速度 。比如 MySQL 中有个 change buffer
  要么担心消费者速度跟不上生产,怕 数据丢失 。所以需要把生产数据先暂存起来。Redis 的缓冲区就是这个作用。
  另外,消费者速度跟不上,如果是同步处理的话,那是不是也会拖慢生产者,所以这里其实也是在保证生产者的速度。
  可能有的读者会说:扯淡,消费者都跟不上了,生产者再快有什么用?
  其实有没有一种可能,生产者根本不关心消费者什么时候用呢?前者是负责把后者需要的东西处理好给它就完事了。生产者很忙,还有其他一大堆数据要处理,不能慢慢等消费者同步消费完才去做其他事情。
  好像开头扩展得有点多,我收一收,下面会详细说到。有疑问的小伙伴请上车,七淅正式发车了。 1. 各缓冲区
  首先 Redis 有什么缓冲区呢?
  一共 4 个: 客户端输入缓冲区 客户端输出缓冲区 复制缓冲区 复制积压缓冲区 2. 客户端输入缓冲区
  服务器端会给 每个连接的客户端 都设置了一个输入缓冲区。 2.1 作用
  暂存请求数据。
  输入缓冲区会先把客户端发送过来的命令暂存起来,Redis 主线程再从输入缓冲区中读取命令,进行处理。
  为了避免客户端和服务器端的请求发送和处理速度不匹配,这点和等下要说的输出缓冲区是一样的。 2.2 溢出场景
  首先缓冲区是一块固定大小的内存区域,如果要把这个地方填满的话,那 Redis 会直接把客户端连接关闭。
  保护自己嘛,你客户端挂了总比我服务端挂了好,服务端一挂就是所有客户端都没用了。
  那填满缓冲区就有 2 个情况了: 要么一下子填满 要么生产速度大于消费速度,慢慢被填满
  那么把上述原理对应到 Redis 的场景。
  一下子填满的情况可以是往 Redis 里写大量数据,百万千万数量级那种。
  另一个情况可以是 Redis 服务端因执行耗时操作,阻塞住了,导致没法消费输入缓冲区数据。 2.3 优化
  对应上面 2 个溢出场景,优化方向很自然就有了。
  一下子填满的情况,是不是可以考虑不要一下子写这么多数据,能否拆下数据(其实一下子写大量数据本身就不合理哈)
  另外,是否可以调高缓冲区大小呢?
  这个其实是不行的哈,因为没有可以设置的地方,目前服务端默认为每个客户端输入缓冲区分配的大小是 1GB。
  那轮到第 2 个溢出场景:两边处理速度不一致。
  正常来说,服务端不应该出现长时间阻塞,所以需要看看是什么原因导致的阻塞,解决到就好了。 3. 客户端输出缓冲区
  同输入缓冲区,服务器端也会给 每个连接的客户端 都设置了一个输出缓冲区。 3.1 作用
  同上,也是暂存请求数据。
  这个地方其实我在文章开头说的,生产者不关心消费者什么时候用,只负责把消费者之前请求的东西处理好就完事了。
  可能有点抽象,我是这么理解的,如果有不妥的地方可以留言纠正我一下
  服务端一般都会和多个客户端连接,加上 redis 网络通信模块是单线程的(即使是新版本支持多线程也一样)
  假如没有输出缓冲区会发生什么事呢?
  服务端处理了很多客户端 A 的请求,需要经过网络这一耗时操作,返回给客户端 A。在这个过程中,客户端 B 的请求一直得不到服务端处理和响应,这样吞吐量就上不去了。
  有了缓冲区之后,至少能解放服务端,让它去处理客户端 B 的请求。 3.2 溢出场景
  这里也是同输入缓冲区,我就不啰嗦了,溢出的话服务端也会关闭客户端连接。 服务器端返回了大量数据,一下子填满了 返回数据的速度太快,比如执行 MONITOR 命令,它会持续输出监测到的各个命令操作 缓冲区大小设置得不合理。 3.3 优化
  类似的,不要一下子读大量数据;不持续在线上执行 MONITOR 命令。
  而输出缓冲区的大小是可以通过 client-output-buffer-limit 来设置的。
  但是一般来说,我们都不用改,因为默认情况就够了,这里了解下就好。
  值得说一点的是,Redis 发布订阅的消息也是在该缓冲区中,可以用  client-output-buffer-limit pubsub 8mb 2mb 60   来限制大小。pubsub 表示对订阅客户端进行设置。换成 normal 则表示当前设置的是普通客户端 整个配置的含义是:实际占用的缓冲区大小要超过 8MB,或者连续 60 秒内对输出缓冲区的写入量超过 2MB 的话,服务端就会关闭客户端连接。 4. 复制缓冲区
  温馨提示下,如果对 Redis 同步/复制不了解的读者,比如不知道全量/增量复制,建议可以看下我这篇文章:一文让你明白Redis主从同步。
  下面回到正题哈。
  有复制肯定有主从,而主从间的数据复制包括全量复制和增量复制两种。
  全量复制是同步所有数据,而增量复制只会把主从库网络断连期间主库收到的命令,同步给从库。 4.1 作用
  暂存数据。
  主节点上会为 每个从节点 都维护一个复制缓冲区。
  在全量复制时,主节点在向从节点传输 RDB 文件的同时,会继续接收客户端发送的写命令请求,并保存在复制缓冲区中,等 RDB 文件传输完成后,再发送给从节点去执行。 4.2 溢出场景
  从节点接收和加载 RDB 较慢,同时主节点接收到了大量的写命令,写命令在复制缓冲区中就会越积越多,最后就会溢出。
  一旦溢出,主节点会直接关闭和从节点进行复制操作的连接,导致全量复制失败 4.3 优化
  可以控制主节点数据量在 2~4GB(仅供参考),这样可以让全量同步执行得更快些,避免复制缓冲区累积过多命令
  也可以调整缓冲区大小,还是之前的  client-output-buffer-limit   参数。
  比如:  config set client-output-buffer-limit slave 512mb 128mb 60  slave 参数表明该配置项是针对复制缓冲区的. 整个配置的含义是:实际占用的缓冲区大小要超过 512MB,或者连续 60 秒内对输出缓冲区的写入量超过 128MB 的话,服务端就会关闭同步连接。 5. 复制积压缓冲区
  这个是在新增复制用到的缓冲区。
  具体介绍还是推荐看上面提到的文章哈,写到这里也 2k+ 字了,顶不住啦。  5.1 作用
  暂存数据。
  从节点意外断开连接后重连,可从该缓冲区同步期间没同步到的数据。 5.2 溢出场景
  不会溢出。(想不到吧.jpg)
  该缓冲区本质是一个 固定长度,先进先出的队列 ,默认 1MB。
  所以当队列被占满,不是报错,也不像上面几个缓冲区直接关闭连接。而是覆盖最早进入队列的数据。
  因此,如果有从节点还没有同步这些旧命令数据,就会导致主从节点重新进行全量复制,而不是增量复制。
  PS:全量复制性能开销远大于增量复制  5.3 优化
  调整复制积压缓冲区的大小,参数是: repl_backlog_size
  原创不易,如果觉得文章不错,希望能关注下我

一号双终端业务,安徽地区来了,开通eSIM后,跑步不用再带上手机安徽移动支持开通一号双终端业务了。根据中国移动一号双终端官网显示,最新增加支持安徽地区开放一号双终端业务办理。安徽移动的用户,现在可以尝试为自己的智能手表开通eSIM功能,享受脱离买手机不一定要新款!上半年这些机型,每一个都是顶尖选手时间来到8月份,近期厂商们发布了多款新机,机圈再次热闹了起来,许多网友都在讨论,这么多新机,应该选哪款才不会出错?不过本期我更想给大家推荐的是几款老旗舰,因为相对新机而言,老旗舰在印度人民的最爱!小米是印度4年最大的手机品牌,到底什么原因呢事实上,小米是印度领先的智能手机品牌。根据小米公司表示,它在过去4年中一直是印度最大的智能手机品牌。并且,小米公司在印度市场仍在增长。根据小米印度董事总经理ManuKumarJai人造肉企业星期零获数千万融资,青年女性乘风破浪的创业征程上帝说,女人是男人的肋骨。然而在互联网创业的大潮中,当代青年女性并不仅仅是默默陪伴男性的肋骨那么简单。当代青年女性不再屈居于男性的背后默默等候扶持,而是站出来活跃于各个领域,越来越中国半导体再进一步,中国市场或将直接排出美国?中科院发出信号中国半导体再进一步,美国的卡脖子要失效了?14nm芯片真的会在明年实现量产吗?中科院发出了什么样的信号?为何说国产芯片将迎来黄金时期?自从被美国制裁后,中国在半导体行业投入了很多,评论1131岁知名企业家车祸离世,对自动驾驶应多些清醒认识自动驾驶的试错成本不应该以消费者的生命为代价,这应该是技术发展的一个底线。事故现场8月14日晚,一则31岁知名企业家林文钦因车祸离世的讣告引发了网友的广泛关注。讣告称,8月12日1四个月后再投500亿,腾讯充分发挥三次分配主观能动性,助力共同富裕为践行企业发展使命,在高质量发展中促进共同富裕,继投入500亿元启动可持续社会价值创新战略后,腾讯今天宣布再次增加500亿元资金,启动共同富裕专项计划,并深入结合自身的数字和科技能腾讯宣布再投五百亿助力共同富裕,却被骂花钱消灾?今早,腾讯发布公众号,在共同富裕专项计划中再增加500亿投入,也就是说在短短四个月内,腾讯在此计划中拨款已经达到1000亿。很多网友为此却并未竖起大拇指,反而暗指腾讯这次操作是挽回腾讯再投500亿元助力共同富裕,用于乡村振兴低收入增收等继投入500亿元启动可持续社会价值创新战略后,腾讯8月18日宣布再次增加500亿元资金,启动共同富裕专项计划,并深入结合自身的数字和科技能力,在诸如乡村振兴低收入人群增收基层医疗体中兴通讯中标中国联通IPRAN产品集采项目,助力云网融合全面升级助力通信运营商打造新一代云网融合建设,中兴通讯以技术硬实力再获青睐。近日,中国联通公布2021年IPRAN产品集中采购结果,中兴通讯多业务分组平台ZXCTN9000EA系列5G承载中兴通讯中标中国联通集采项目,助力推进5G智能城域网发展这两年全网都在热议的中国联通智能城域网又有了大动作!近日,中国联通公布2021年IPRAN产品集中采购结果,本次集采是中国联通自2020年智能城域网大规模建设之后最大规模的设备集采
深度解决win10控制面板打不开而且闪退的解决方法有深度技术系统的用户在使用win10正式版电脑的时候,想要打开win10控制面板却出现闪退的问题,下面,深度系统之家小编来为大家分享一下具体的解决方法。方法如下1更换默认输入法,可Win1021H2系统好用吗?抢先看新特性最新改进很多深度技术的小伙伴都为Win10系统中的UI分裂症都让很多老用户头疼,说它不上进吧,很多新功能在线,说它很棒吧,却处处流露着各种不靠谱的设计。特别是Win10系统已经上线五年多,win10正式版没有本地连接的解决方法有深度技术之家的朋友在电脑上刚安装了win10正式版系统,却发现桌面没有本地连接,问深度小编是怎么回事?对于这个问题,相信还有很多朋友都不知道如何解决,win10系统为什么会没有本windows7旗舰安装版降低cpu使用率的方法有不少深度技术之家的小伙伴,都应该遇到过比较常见的电脑问题,就是CPU使用率高,导致运行速度变慢的问题。其实,CPU是中央处理器,是一台计算机的运算核心和控制核心,也是电脑中的主要中国芯片企业加速发展,每年1。9万亿进口芯片订单将不复存在。现如今芯片成为了全球热议的话题,大多数人的目光都聚集在了芯片上面。中国作为全国第一大芯片进口大国,每年光中国进口的芯片价值高达2万多亿,大部分进口的都是美国和欧洲的芯片。美国和欧洲日本强项的领域,为何会落后于中国?日本是一个让中国人又爱又恨的国家,爱的是日本的文化影视行业,恨的是日本人先辈的侵略行为。虽然日本的行为不行,但是在汽车领域上,还是让人非常的佩服得。日本在汽车领域领先中国很多年,当中兴这手机颜值绝了,代言人也绝了,太美了吧今天中兴正式发布了中兴axon30,6。92英寸的屏幕,正面看真的是完美。没有一点瑕疵,摄像头也完美的藏在了屏下。这代言人真的是美美美屏幕支持dC调光,这个好评,最近发布的手机这个精挑细选后,决定选择唐可能因为从生活环境的一个因素吧,所以我这个人比较务实的那种类型,不管买衣服也,还买什么东西,都喜欢货比家,尤其在自己不急使用的情况之,肯定会进行多方位的观察以及各种了解,而且我觉得牛年买牛车比亚迪唐DM在现阶段,我们经济条件已经发展,生活也越来越了,家家户户都买了自己汽车,来方便出行,最近多人问起比亚迪唐DM性能怎么样,今天我们去看看吧。外观方面外观发生了大变化,DragonFa夏末ddcccc秋初的美,有你和我一起欣赏这两年,比亚迪是真火啊,从我身边出现越来越多比亚迪车就能看出来,比亚迪有几款非常经典车型,尤其是王朝系列里面,每一辆都是精品,过个人觉,王朝系列最耀眼车,当属我汉DM。先镇楼照正是带着我家汉EV来亮个相,顺便谈下用车感受最近身边关注车市的兄弟口中,最常讨论的一个话题就是缺芯,现在只要去网上搜索缺芯,就会出现多关于缺芯的新闻,五花门还带重样的。对此我只想说买车就得该出手时就出手,早买早享受,谁知道车