如何知道 redis 中特定键的大小(以 KB 为单位)?
我知道
info memory
命令,但它给出了 Redis 实例的组合大小,而不是单个键的大小。
我知道这是一个老问题,但是,仅供记录,Redis 自版本
4.0.0以来实现了
memory usage <key>
命令。
输出是将密钥存储在 RAM 中所需的字节量。
您目前(v2.8.23 和 v3.0.5)不能。
来自
serializedlength
的 DEBUG OBJECT
(如 @Kumar 所建议)并不表示该值在 RAM 中的真实大小 - Redis 一方面采用多种“技巧”来保存在 RAM 上,另一方面您还需要考虑到数据结构的开销(也许还有 Redis 的一些全局字典)。
好消息是,OSS 项目中已经有关于该主题的讨论,并且很可能在未来内存内省将得到极大改进。
注意:我开始(暂时停止)关于该主题的系列 - 这是第一部分:https://redislabs.com/blog/redis-ram-ramifications-i
DEBUG OBJECT <key>
揭示了类似于密钥的serializedlength
的东西,这实际上是我一直在寻找的东西......对于整个数据库,您需要聚合KEYS *的所有值,这对于脚本语言来说应该不会太困难您的选择...不好的是 redis.io 并没有太多关于 DEBUG OBJECT 的信息。
为什么不尝试一下
附加{您的密钥}“”
这不会向现有值添加任何内容,但返回当前长度。
如果您只想获取键(字符串)的长度:STRLEN