我想检查实时使用多少内存,例如,每次设置或插入一些数据时,我想知道增加了多少内存以及完全使用了多少内存。
我尝试使用INFO
命令,并检查used_memory
或used_memory_*
属性是否有效,但很抱歉我发现它只显示系统分配的内存,因为每个我在插入新数据后检查它,它们仍然保持不变
有什么方法可以检查Redis中使用的实时内存吗?
答案 0 :(得分:1)
Redis本身没有办法找出密钥使用的内存。但是,您可以使用redis-rdb-tools等外部工具来监控内存使用情况。
您可以在两种模式下使用redis-rdb-tools -
redis-memory-for-key
命令查找特定密钥使用的内存这两种方法都不是真正意义上的实时,但是当你想要诊断内存问题时,这两种方法都非常有用。
答案 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进行了许多与内存相关的优化。例如,它能够分解包含小整数的值。或者,如果将数据附加到现有字符串,则相应的缓冲区在每次追加操作时都不会增长。因此,根据这些优化,给定操作集的内存使用量增加/减少并不总是一致的。