Redis内存_redis内存管理

Redis内存_redis内存管理Redis内存消耗:自身内存 + 对象内存 + 缓冲内存 + 内存碎片 自身内存:Redis进程自身内存占用量很小,大约在3.8M左右。 对象内存:sizeof(keys) + sizeof(val…

Redis内存

Redis内存消耗:自身内存 + 对象内存 + 缓冲内存 + 内存碎片

  1. 自身内存:Redis进程自身内存占用量很小,大约在3.8M左右。
  2. 对象内存:sizeof(keys) + sizeof(values),键和值的内存都需要关注
  3. 缓冲内存:主要包括客户端缓冲、复制积压缓冲区、AOF缓冲区
    • 客户端缓冲:指所有接入到Redis服务器TCP连接的输入输出缓冲,超过1G会自动断开
    • 复制积压缓冲区:用于实现部分复制功能补救措施的缓冲区
    • AOF缓冲区:Redis重写期间保存最近的写入命令,消耗内存取决于AOF重写时间及写入命令量
  4. 内存碎片:Redis默认使用jemalloc分配器、可选glibc、tcmalloc,为了更好的管理和复用内存,一般采用内存块进行分配,通常采用数据对齐或安全重启处理内存碎片超标情况

子进程内存消耗:子进程fork后与父进程享有同一物理内存,AOF/RDB期间父进程处理写请求时会复制出请求的页副本进行写操作,子进程依然读取父进程快照

  1. Redis fork期间产生的子进程需要消耗的内存由持久化期间写入命令量决定
  2. 设置sysctl vm.overcommit_memory = 1允许内存分配所有的物理内存
  3. 排查当前系统是否支持THP,防止copy-on-write期间内存过度消耗

内存管理:Redis通过控制内存上限和回收策略实现内存管理。

  1. 设置内存上限:Redis使用maxmemory参数限制最大可用内存
    • 用于缓存场景,超出上限maxmemory后使用LRU等删除策略释放空间
    • 防止所有内存超过服务器物理内存,需要注意由于内存碎片的存在,实际消耗会比maxmemory更大
  2. 动态调整内存上限
    • 当Redis实例设置maxmemory不合理时,可以通过config set maxmemory进行修改
  3. 内存回收策略
    • 删除到达过期时间的键对象:惰性删除(读取到超时的键就删除,减少TTL的消耗)和定时任务删除(每秒执行十次,根据键的过期比例使用快慢两种方式回收键)
    • 内存溢出控制策略(maxmemory-policy):noeviction(不删除,拒绝写入)、volatile-lru(LRU删除设置了超时时间的属性)、allkeys-lru(LRU删除不管超时)、allkeys-random(随机删除所有键)、volatile-random(随机删除过期键)、volatile-ttl(根据对象的ttl属性删除即将过期的数据)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/6814.html

(0)
上一篇 2023-04-01
下一篇 2023-04-01

相关推荐

  • sql按时间戳查询_js日期转时间戳

    sql按时间戳查询_js日期转时间戳需求:有一张域名浏览记录表,有字段warning浏览次数,字段updatetime创建时间,现在需要获取,按创建时间的降序,浏览量的降序,获取域名列表。就是说,同一天创建的域名,如果谁的浏览量大,谁就

    2023-03-12
    91
  • Python高级用法:掌握getattr函数的属性操作技巧

    Python高级用法:掌握getattr函数的属性操作技巧Python中的getattr函数是一个非常有用的函数,它可以用于获取对象的属性,如果对象不存在指定的属性,则会返回一个默认值。该函数的语法如下:

    2024-01-04
    51
  • ava基础MySQL存储过程 Java基础 JDBC连接MySQL数据库[通俗易懂]

    ava基础MySQL存储过程 Java基础 JDBC连接MySQL数据库[通俗易懂]1、MySQL存储过程 1.1、什么是存储过程 带有逻辑的sql语句;带有流程控制语句(if while)等等 的sql语句 1.2、存储过程的特点 1)执行效率非常快,存储过程是数据库的服务器端执…

    2023-03-30
    102
  • Pisa-Proxy 之 SQL 解析实践

    Pisa-Proxy 之 SQL 解析实践SQL 语句解析是一个重要且复杂的技术,数据库流量相关的 SQL 审计、读写分离、分片等功能都依赖于 SQL 解析,而 Pisa-Proxy 作为 Database Mesh 理念的一个实践,对数据库

    2023-05-24
    89
  • 以Python输入为中心的原始标题

    以Python输入为中心的原始标题Python作为一门高级编程语言,在很多方面都具有很多优势,其中包括Python输入。Python输入就是指在程序运行时,程序能够从用户输入中获取所需要的数据。Python输入可以通过多种方式实现,其中包括直接通过input函数获取用户输入和读取文本文件中存储的数据等。

    2024-04-21
    11
  • Oracle学习笔记二十一:动态游标的使用

    Oracle学习笔记二十一:动态游标的使用一、概念 • REF游标和游标变量用于处理运行时动态执行的SQL查询的结果集。 • 创建游标变量有两个步骤: • 声明REF游标类型 • 声明REF游标类型的游标变量 • 声明REF游标的语法: ty

    2023-05-21
    110
  • 赛车计划2和3哪个好_宾汉姆3-1逆转晋级冠军组

    赛车计划2和3哪个好_宾汉姆3-1逆转晋级冠军组作者:Yao Wei 11 月初我们开启了一项社区新活动「TiDB 性能挑战赛」(Performance Challenge Program,简称 PCP),这项积分赛将持续 3 个月,选手将完成一…

    2022-12-25
    96
  • 制作MySQL RPM安装包Spec「建议收藏」

    制作MySQL RPM安装包Spec「建议收藏」适用环境: 数据库版本:MySQL 5.7.26 操作系统:CentOS 7 制作思路: 将数据库初始化和配置工作放到安装脚本中方便定制: 1、打包MySQL应用目录 2、不自动生成配置文件 3、不自

    2022-12-30
    107

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注