Redis 基础教程

Redis 命令

Redis 高级教程

Redis 笔记

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/redis-command-memory-stats.html

Redis MEMORY STATS 命令

Redis 服务器 Redis 服务器


Redis MEMORY STATS 命令将服务器的内存使用情况以数组形式返回,内存使用信息以指标和相对应值的格式返回。

命令格式

MEMORY STATS

可用版本:>=4.0.0

命令返回值

返回包含内存使用指标名称和对应值的嵌套列表。

如下指标会被返回:

  • peak.allocated:Redis 启动以来,allocator 分配的内存峰值,单位字节;同 INFO 的 used_memory_peak。
  • total.allocated:allocator 当前分配的内存总字节数;同 INFO 命令 used_memeory。
  • startup.allocated:Redis 启动完成消耗的内存字节数;同 INFO 的 used_memory_startup。
  • replication.backlog:Redis 复制积压缓存区内存字节数;同 INFO 的 repl_backlog_size。
  • clients.slaves:所有副本节点内存消耗总字节数(查询输出缓冲区,连接内存消耗)。
  • clients.normal:Redis 所有常规客户端内存消耗总字节数(查询输出缓冲区,连接内存消耗)。
  • aof.buffer:当前和重写 AOF 缓冲区内存消耗总字节数;同 INFO 命令 aof_buffer_length 与 aof_rewrite_buffer_length 之和。
  • dbXXX:每个数据库中元数据占用的额外内存字节数。(redis 的 db 就是一张 hash 表,首先就是这张 hash 表使用的内存,每一个 key-value 对都有一个 dictEntry 来记录他们的关系,元信息便包含该 db 中所有 dictEntry 使用的内存,redis 使用 redisObject 来描述 value 所对应的不同数据类型(string、list、hash、set、zset),那么 redisObject 占用的空间也计算在元信息中。overhead.hashtable.main  指以上三者之和。overhead.hashtable.expires 用于存储 key 的过期时间耗费的内存资源。)
  • overhead.total:Redis 额外内存消耗总字节数,i.e. startup.allocated,replication.backlog,clients.slaves,clients.normal,aof.buffer 以及管理 keyspace 使用的内部数据接口消耗的内存字节数,同 INFO 的 used_memory_overhead。
  • keys.count:整个 redis 实例 key 的个数。
  • keys.bytes-per-key:每个 key 平均字节数,net memory usage(total.allocated 减去 startup.allocated)与 keys.count 的比值。
  • dataset.bytes:Redis 实例中数据占用的总字节数,计算方法 total.allocated 减去 overhead.total。
  • dataset.percentage:Redis 数据消耗内存占总内存的百分比。
  • peak.percentage:当前内存消耗占峰值内存消耗的百分比。
  • fragmentation:同 INFO 的 mem_fragmentation_ratio。

示例

redis> MEMORY STATS
 1) "peak.allocated"
 2) (integer) 1043488
 3) "total.allocated"
 4) (integer) 1043552
 5) "startup.allocated"
 6) (integer) 981136
 7) "replication.backlog"
 8) (integer) 0
 9) "clients.slaves"
10) (integer) 0
11) "clients.normal"
12) (integer) 49638
13) "aof.buffer"
14) (integer) 0
15) "overhead.total"
16) (integer) 1030774
17) "keys.count"
18) (integer) 0
19) "keys.bytes-per-key"
20) (integer) 0
21) "dataset.bytes"
22) (integer) 12778
23) "dataset.percentage"
24) "20.472314834594727"
25) "peak.percentage"
26) "100.00613403320312"
27) "fragmentation"
28) "0.67110222578048706"
Redis MEMORY MALLOC-STATS 命令提供内存分配情况的内部统计报表。该命令目前仅实现了 jemalloc 作为内存分配器 ...
Redis MEMORY HELP 命令返回不同子命令的说明。 ...
Redis MEMORY USAGE 命令给出一个 key 和它值在 RAM 中占用的字节数。返回的结果是 key 的值以及为管理该 key ...
Redis MEMORY PURGE 命令尝试清除脏页以便内存分配器回收使用。该命令目前仅实现了 jemalloc 作为内存分配器的内存统计 ...
Redis MEMORY DOCTOR 命令列出 Redis 服务器遇到的不同类型的内存相关问题,并提供相应的解决建议。 ...