Redis 缓冲区

这篇具有很好参考价值的文章主要介绍了Redis 缓冲区。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

缓冲区的应用场景 :

  • 客户端与服务器端的通信时,暂存客户端发送的命令数据,或暂存服务器端返给客户端的数据结果
  • 主从节点间进行数据同步时,暂存主节点接收的写命令和数据

客户端

缓冲区 : 避免客户端和服务器端的请求发送和处理速度不匹配

  • 服务器给每个连接的客户端都准备个输入缓冲区 , 输出缓冲区

image.png

输入缓冲区

输入缓冲区的溢出情况 :

  • 写入 bigkey,如 : 一次写入百万级别的集合数据
  • 服务器端处理请求的速度过慢,如 : Redis 主线程出现阻塞,导致输入缓冲区积累过多

查看输入缓冲区情况 :

  • cmd : 客户端最新执行的命令。如 : CLIENT
  • qbuf : 输入缓冲区已用的大小。如 : 已用 26 字节
  • qbuf-free : 输入缓冲区未用的大小。如 : 未用 32742 字节的缓冲区
  • qbufqbuf-free 的总和 : 该客户端分配的缓冲区总大小 (26 + 32742 = 32768 字节 = 32KB)
CLIENT LIST

id=5 addr=127.0.0.1:50487 fd=9 name= age=4 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=26 qbuf-free=32742 obl=0 oll=0 omem=0 events=r cmd=client

Redis 的每个客户端输入缓冲区大小的上限阈值固定 (1 GB)

  • 当多个客户端的占用内存总量 > Redis 的 maxmemory (如 : 4GB),就会触发 Redis 数据淘汰 , 进而导致性能低下

输出缓冲区

输出缓冲区有 2 个缓冲区 :

  • 固定缓冲空间 : 大小为 16KB,暂存 OK 响应和出错信息
  • 动态增加的缓冲空间 : 暂存大小可变的响应结果

输出缓冲区溢出情况 :

  • 返回 bigkey 的大量结果 : 会占用大量的内存空间
  • 执行 MONITOR : 会持续占用输出缓冲区
  • 缓冲区大小设置不合理

监测 Redis 每个命令 :

  • 建议用测试环境
MONITOR


OK
1600617456.437129 [0 127.0.0.1:50487] "COMMAND"
1600617477.289667 [0 127.0.0.1:50487] "info" "memory"

读写命令交互客户端的设置缓冲区大小 :

  • normal : 设置对象是普通客户端
  • 第 1 个 0 : 缓冲区大小限制
  • 第 2 个 0 : 缓冲区持续写入量限制
  • 第 3 个 0 : 持续写入时间限制
  • 0 : 不限制
client-output-buffer-limit normal 0 0 0

订阅客户端设置缓冲区大小 :

  • pubsub : 设置对象 : 订阅客户端
  • 8mb : 输出缓冲区上限 : 8MB,> 8MB,就关闭客户端的连接
  • 2mb 和 60 : 连续 60 秒内对输出缓冲区的写入量 > 2MB ,就关闭客户端连接
client-output-buffer-limit pubsub 8mb 2mb 60

主从缓冲区

主从集群间的数据复制有 2 种 :

  • 全量复制 : 同步所有数据
  • 增量复制 : 只收集主从库网络断连时的命令,同步给从库

复制缓冲区

主节点向从节点传输 RDB 时,会继续接收客户端的写请求

  • 把写命令先保存在复制缓冲区中,等 RDB 传输完成后,再发送给从节点执行

image.png

避免复制缓冲区发生溢出 :

  • 控制主节点的内存大小 , 建议 : 2~4 G
  • 设置合理复制缓冲区大小

复制缓冲区大小 :

  • slave : 对复制缓冲区
  • 512mb : 缓冲区大小的上限为 512MB
  • 128mb 和 60 : 连续 60 秒内的写入量 > 128MB 时,触发缓冲区溢出
  • 例子 : 一条写命令大小 : 1KB,复制缓冲区能累积 512K 条 (512MB/1KB = 512K)。写命令速率上限是 2000 条 /s(128MB/1KB/60 约等于 2000)
config set client-output-buffer-limit slave 512mb 128mb 60

复制积压缓冲区

主节点会把收到的写命令写入复制积压缓冲区 (repl_backlog_buffer)

  • 当从节点发生网络闪断,再与主节点连接后,从节点就从复制积压缓冲区中,读取断连开时的写命令,进行增量同步

image.png文章来源地址https://www.toymoban.com/news/detail-469654.html

到了这里,关于Redis 缓冲区的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Linux】理解缓冲区

    我们发现 printf 和 fwrite (库函数)都输出了2次,而 write 只输出了一次(系统调用)。为什么呢?肯定和fork有关! C接口的函数被打印了两次系统接口前后只是打印了一次:和fork函数有关,fork会创建子进程。在创建子进程的时候,数据会被处理成两份,父子进程发生写时拷

    2024年01月23日
    浏览(52)
  • 理解缓冲区

    对于这样的代码,首先可以肯定的是 printf 语句先于 sleep 执行,既然如此那么就应该是先打印语句然后进行休眠,下面看看结果: 但这里却是先休眠以后再打印语句,这是因为存在一个叫缓冲区的东西,当我们要向外设写入数据(让显示器显示就是向显示器写入数据)时会将

    2023年04月25日
    浏览(72)
  • 【Linux】文件缓冲区

    提到文件缓冲区这个概念我们好像并不陌生,但是我们对于这个概念好像又是模糊的存在脑海中,之间我们在介绍c语言文件操作已经简单的提过这个概念,今天我们不妨深入理解什么是文件缓冲区 通过自己实现库中的一些文件操作函数更加深入的理解文件缓冲区 自定义实现

    2024年02月10日
    浏览(57)
  • C/C++缓冲区

    什么是缓冲区? 程序和磁盘文件之间不能直接交换数据,必须通过内存中一个被称为文件缓冲区的区域来中转。ANSIC标准规定,系统会自动为每个正在使用的文件在内存中开辟一个缓冲区,缓冲区的大小随机器而异。 缓冲区有什么作用? 假设我们在家中休息看电视吃零食,

    2024年02月15日
    浏览(49)
  • 【Linux】深入理解缓冲区

    目录 什么是缓冲区 为什么要有缓冲区 缓冲区刷新策略 缓冲区在哪里  手动设计一个用户层缓冲区 缓冲区本质上一块内存区域,用来保存临时数据。 缓冲区在各种计算任务中都广泛应用,包括输入/输出操作、网络通信、图像处理、音频处理等。 这块内存区域是由 谁提供的

    2024年02月15日
    浏览(62)
  • 【linux】重定向+缓冲区

    自我名言 : 只有努力,才能追逐梦想,只有努力,才不会欺骗自己。 喜欢的点赞,收藏,关注一下把! close(1),为什么没有打印新建文件fd呢? printf(“%dn”,fd); printf会把内容打印到stdout文件中。 但是close(1)关闭标准输出stdout—显示器,int fd=open();新打开的文件fd是1。 st

    2024年02月08日
    浏览(54)
  • SEED-缓冲区溢出攻击

    实验环境:SEED-Ubuntu20.04虚拟机 a) 缓冲区溢出原理 **缓冲区溢出攻击原理:**利用溢出的数据改变源程序的控制流,如覆盖返回地址 b) 分析生成badfile文件的exploit.py程序 Shellcode部分 字节数组末尾处填入shellcode c) 编译目标服务器上具有缓冲区溢出漏洞的stack.c程序,并将其缓冲

    2024年02月07日
    浏览(44)
  • TCP缓冲区参数调优

    1、系统原值查询 2、设置值 3、参数解析 tcp_wmem(3个INTEGER变量): min, default, max **min:**为TCP socket预留用于发送缓冲的内存最小值。每个tcp socket都可以在建议以后都可以使用它。默认值为4096(4K)。 **default:**为TCP socket预留用于发送缓冲的内存数量,默认情况下该值会影响其它

    2024年02月11日
    浏览(41)
  • 网络安全——缓冲区溢出攻击

    1、缓冲区溢出概述 什么是缓冲区?它是指程序运行期间,在内存中分配的一个连续的区域,用于保存包括字符数组在内的各种数据类型。所谓溢出,其实就是所填充的数据超出了原有的缓冲区边界,并非法占据了另一段内存区域。 两者结合进来,所谓缓冲区溢出,就是由于

    2024年02月13日
    浏览(47)
  • 漏洞利用与缓冲区溢出攻击

    目录 简介: 1. 漏洞利用基础 2. 缓冲区溢出攻击 3. 缓解缓冲区溢出攻击 3.1 边界检查 3.2 使用安全函数 3.3 使用堆栈保护技术 总结: 简介: 漏洞利用是渗透测试中的重要部分,它允许攻击者通过利用软件或系统的漏洞来获取未经授权的访问权限。其中,缓冲区溢出攻击是最常

    2024年02月14日
    浏览(98)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包