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

面试官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
  原创不易,如果觉得文章不错,希望能关注下我

最近想入手一个华为手机,不知道选哪个,在纠结,有什么建议?由于华为芯片受困,一向以机海著称的华为并没有发布几款手机,除了Mate40系列,拿得出手的也就Nova8系列了。就目前来说,华为最值得购买的手机是Mate40Pro,但从消费者的角现在的你们,还会考虑买VIVO手机吗?如果不考虑vivo子品牌的话,那么个人是不会考虑购买vivo手机的,因为目前在个人看来vivo并没什么很对个人胃口的手机,就拿旗舰机vivoX60Pro来说,这款产品和友商的那些产为什么华为的中端机不用麒麟970或麒麟960,而是用麒麟710呢?麒麟970和麒麟960都属于华为之前的高端芯片,因为麒麟900系列的芯片都代表着华为最高性能的产品,但是华为自身却不能生产,需要交给业界的台积电来代工,但是使用同时期先进工艺的麒麟为什么手机激活后无法退货,不激活怎么知道手机有没有问题呢?激活的作用就表明手机已经卖出去了,再卖就是二手手机,可以防止黄牛倒卖手机(对于紧俏的型号,需要在店里现场激活就是这个原因),如果激活了还能无理由退货,那么就给很多不法分子或者存心捣助听器该如何选配?佩戴助听器,要看你选择什么样的助听器。有的人经济实力不允许,选用的助听器效果不好,可能就没效果。我有个亲戚的孩子也是从小就发现听力下降,现在三十多岁了,一直佩戴助听器,今年过年去他iPhone13被曝镜头变凸了,为什么手机后置模组越来越大?最近看到网上爆出的iPhone13系列手机外观图,大家先来感受下,可明显看到后置摄像头模组变大了许多!iPhone13Pro的后摄模组尺寸约为36mmx37mm,iPhone13的荣耀50抢先曝光!卡地亚戒指镜头易烊千玺代言,下月发布近两年,手机圈似乎流行与豪车合作联名,例如华为与保时捷,OPPO与兰博基尼,realme与奔驰,iQOO与宝马。如今荣耀更是与奢侈品珠宝看齐,不得不说,手机圈越来越会玩了。近日,有谁说二合一轻薄本不堪一用?联想YOGADuet配主流处理器,价格不高提起二合一电脑,很多人会皱一下眉头,主要是感觉性能差,价格贵,并不如传统轻薄本划算。但实际上,二合一电脑不得不采用超低电压处理器的时代已经过去了,现在其也可以采用主流的15W低电压Redmi小白体验红米K40使用两周,一起来看下它的优缺点红米K40相信大家都不陌生,超高性价比,一经发布便引起了众多好评,造成一机难求的局面,甚至需要抢购,本人入手两周,下面一起聊聊使用中的优缺点,个人日常使用,非专业机构测评,欢迎大家降价后的iPhone12mini值得入手吗?优缺点明显,两类人最不建议众所周知,电子产品有时候为了提高销量,降价往往是最明显的方式,从之前iPhone12全系降价之后,销量提升非常明显,在第三方电商平台京东,iPhone12目前的商品评价量已经超过1西安半导体产业怪相产值千亿,却难留十万芯片人才十城造芯记近几年,国际关系的不确定性让原本基于高度协作的全球芯片产业链备受冲击,即使造芯不像造原子弹可以关起门来另起炉灶,在封闭的体系中获取胜利的果实,但警惕无芯可用的危机,我们不得不重新审
一点资讯内斗终局凤凰卫视套现4。5亿美元退出还记得今年1月一点资讯忽然宣布更换CEO的那场内斗吗?1月21日,一点资讯一封内部信免除时任CEO李亚的职务,随后李亚发内部邮件称这次免职不合规。让外界有些意外的是,一点资讯的内部华为和荣耀手机中非常经典的7大功能,很实用,不知道就可惜了!今天小编给大家带来的是华为和荣耀手机中最经典的7大功能,非常的实用,不知道的小伙伴赶紧来看看吧。一手机克隆换了新的手机,旧的手机上的数据怎么办?当然是使用华为和荣耀手机上自带的手机iPhone手机必装的五个逆天黑科技App,要是没装过就可惜了大家都知道,使用iPhone的小伙伴可是不少,想要装的App也是不少,但是有不少人也不知道应该安装什么App。今天小编将分享几个不得不装的逆天App,让我们一起看看吧一Alook这有哪些国产热水器质量比较好的推荐?作为多年热水器研发工程师我认为电热水器海尔美的质量都可以,销量也是数一数二,但技术方面比较认真的是AO史密斯,再有就是意大利阿里斯顿等。燃气目前排名应该是能率,林内,海尔,美的,万现在有什么好的交友软件而且还不花钱?天下没有免费的午餐,不在这儿收q,就在哪儿收钱。也可以理解总结我这么多年使用过的所有的交友软件,我觉得恋爱密室最好用的。我之前有一段时间因为跟闺蜜闹掰了,一直封闭自我,独来独往,后激光投影强势来袭,值得等待听说投影仪又升级换代了,激光投影强势来袭,将给用户带来不一样的体验。新时代青年,对于投影仪也是很关注的,只是市面上的投影仪在功能质量价格等多个方面层次不齐,着实给人的选择带来了很大请求千元推荐一套电脑主机?文小伊评科技1000块钱的预算,想要配置一台不含显卡的主机,且只需要CPU主板套装,内存条以及固态这四样东西,虽然预算比较低,但是由于不牵扯到电源,显卡等配件,相对还是比较可行的。人工耳蜗可以戴一辈子的吗?人工耳蜗主要的部件是体内的植入体(电极)和体外的言语处理器,这两部分是人工耳蜗的主体结构。植入体各公司都称设计寿命是终身,也有说60年或70年,但是从第一台人工耳蜗出现到现在也不过今年618买索尼的a7m3好还是a7c好,本人小白一枚,业余爱好者求各位摄影界的大佬帮帮忙?我推荐你买m3,因为a7c为了区别m3阉割了几个按键,导致操作繁琐,这对易用性影响很大。特别是业余的爱好者,好的上手体验会让你离专业更进一步。反而专业摄影师会回过头来买a7c,因为35mm经典焦距作为主摄努比亚Z40Pro使用体验努比亚手机,可以说从很多年开始就和摄影俩字牢牢绑在一起。在这么多年耕耘之后,提到努比亚手机,摄影功能总是绕不过的。前几天发布的努比亚Z40Pro也受到了很多手机摄影爱好者的关注。我西媒报道中国在电动汽车赛道遥遥领先参考消息网3月1日报道西班牙阿贝赛报网站2月27日发表题为中国攻克电动汽车极点的报道,报道称,与以往的工业革命不同,这一次中国正处于主导地位。全文摘编如下引擎盖下的电动马达,是它们