Redis:我如何检查实时使用的内存量?

时间:2013-11-05 06:35:59

标签: memory-management redis

我想检查实时使用多少内存,例如,每次设置或插入一些数据时,我想知道增加了多少内存以及完全使用了多少内存。

我尝试使用INFO命令,并检查used_memoryused_memory_*属性是否有效,但很抱歉我发现它只显示系统分配的内存,因为每个我在插入新数据后检查它,它们仍然保持不变

有什么方法可以检查Redis中使用的实时内存吗?

2 个答案:

答案 0 :(得分:1)

Redis本身没有办法找出密钥使用的内存。但是,您可以使用redis-rdb-tools等外部工具来监控内存使用情况。

您可以在两种模式下使用redis-rdb-tools -

  1. 使用redis-memory-for-key命令查找特定密钥使用的内存
  2. 获取redis服务器的rdb转储并生成CSV以查找每个密钥使用的内存
  3. 这两种方法都不是真正意义上的实时,但是当你想要诊断内存问题时,这两种方法都非常有用。

答案 1 :(得分:1)

used_memory字段是您正在寻找的。它不是由系统分配的内存,正如你所说,这是进程内存分配器给Redis的内存。

示例:

> info memory
...
used_memory:541368
...
> set y "titi"
OK
> info memory
...
used_memory:541448       # i.e. +80 bytes
...
> del y
(integer) 1
> info memory
...
used_memory:541368
...

请注意,Redis进行了许多与内存相关的优化。例如,它能够分解包含小整数的值。或者,如果将数据附加到现有字符串,则相应的缓冲区在每次追加操作时都不会增长。因此,根据这些优化,给定操​​作集的内存使用量增加/减少并不总是一致的。