Redis 中 USED 和 RSS

一、核心概念解释

1. USED(已用内存)
  • 定义 :USED 是 Redis 实际存储数据和运行时所需的内存,是 Redis 内部自己统计的、真正用于存放键值对、过期表、字典结构等核心数据的内存大小。

  • 通俗理解:相当于你往 Redis 这个 "仓库" 里实际堆放的 "货物" 占用的空间。

  • 查看方式 :通过 INFO memory 命令查看 used_memory 字段,单位是字节:

    复制代码
    127.0.0.1:6379> INFO memory
    # Memory
    used_memory:104857600  # 示例值:100MB,即USED内存
    ...
  • 特点 :

    • 直接反映 Redis 业务数据的内存占用;
    • 会随着数据的增删改查实时变化;
    • 是 Redis 配置 maxmemory 时主要参考的指标(maxmemory 限制的就是 USED 内存)。
2. RSS(常驻集大小)
  • 定义 :RSS(Resident Set Size)是操作系统层面统计的、Redis 进程实际占用的物理内存,也就是操作系统分配给 Redis 进程的内存总量。

  • 通俗理解:相当于 "仓库" 本身(包括货架、通道、闲置空间)加上 "货物" 总共占用的土地面积。

  • 查看方式 :通过 INFO memory 命令查看 used_memory_rss 字段:

    复制代码
    127.0.0.1:6379> INFO memory
    # Memory
    used_memory:104857600
    used_memory_rss:134217728  # 示例值:128MB,即RSS内存
    ...
  • 特点 :

    • 包含 Redis 的 USED 内存 + 内存碎片 + 操作系统分配的额外内存(如进程栈、共享库、内存页表等);
    • 通常 RSS > USED,差值就是内存碎片 (通过 mem_fragmentation_ratio = used_memory_rss / used_memory 计算,正常范围 1.0-1.5);
    • 如果 RSS 远大于 USED(碎片率 > 2),说明内存碎片严重,可能需要重启 Redis 清理;如果 RSS < USED,说明 Redis 使用了交换内存(swap),性能会大幅下降。

二、关键区别对比

维度 USED 内存 RSS 内存
统计层面 Redis 内部统计 操作系统层面统计
包含内容 仅业务数据 + 核心运行内存 USED + 内存碎片 + 系统额外内存
核心作用 反映实际数据占用,参考 maxmemory 反映进程实际占物理内存,排查碎片 /swap
大小关系 通常更小 通常更大

总结

  1. USED 是 Redis 自身使用的 "有效内存",直接对应业务数据量,是配置 maxmemory 的核心参考;
  2. RSS 是操作系统给 Redis 进程分配的 "总物理内存",包含碎片和系统开销,主要用于排查内存碎片、swap 等问题;
  3. 健康的 Redis 实例中,RSS 略大于 USED(碎片率 1.0-1.5),若差值过大需关注内存碎片,过小需警惕 swap 占用。
相关推荐
太理摆烂哥7 小时前
MySQL数据库基础
数据库·mysql
wuhuhuan7 小时前
JMeter 连接数据库并取值(JDBC 实战)
数据库·jmeter
一个有温度的技术博主7 小时前
两级缓存一致性实战:Redis + 本地缓存,如何不让数据“分裂”?
redis·spring·缓存
小羊没烦恼!8 小时前
OS X 上使用.NET开发应用程序
开发语言·前端·数据库·人工智能·c#·策略模式
Rain的Java大神之路8 小时前
[特殊字符]8年Java老兵转型AI Agent:90%的人挂在同一个坑,根本不用学Python!(万字实战复盘,建议收藏)
java·数据库·人工智能·后端·python·spring·ai编程
码途行者8 小时前
缓存一致性难题:Redis 和数据库如何做到数据一致?
数据库·redis
SelectDB8 小时前
Doris VARIANT 速查:类型映射、建表写法、索引配置与常见注意点
大数据·数据库·数据分析
l1t9 小时前
几种数据库软件count(distinct)和count()from group by子查询性能测试
开发语言·数据库
夜雪一千9 小时前
如何在MySQL中实现字段级加密
android·数据库·mysql
CJi0NG9 小时前
【自用】MySQL-存储引擎
数据库·mysql