我正在尝试插入密钥 - "值"在redis。"价值"是我的应用程序插入redis时的X字节。我想知道在触发后要监视哪个参数" INFO"来自./redis-cli的命令检查X(或者可能是X + somevalue,以防redis填充一些数据)在redis中使用了多少字节。这样做是为了确定我需要的maxmemory(redis.conf)参数应用
我有一个主人和一个哨兵,我正在使用redis进行暂时存储。我已经尝试监视used_memory参数。但根据我得到的数据,似乎maxmemory与used_memory无关。
所以我正在考虑使用"调试对象Mykey"这给出了序列化的长度。究竟是这个长度,我在redis文档中找不到任何描述。
所以基本上有两个问题:
maxmemory和used_memory是否相关,如果是,那么使用used_memory来计算插入的键值所占用的空间会有一些问题。
"调试对象Mykey"中的序列化长度是什么?命令
答案 0 :(得分:0)
maxmemory
配置指令规定了Redis应该允许用于用户数据的最大内存量。设置为0(默认值)时,只要底层操作系统允许,Redis就会分配内存。 used_memory
命令的INFO
值是调用命令时用户数据消耗的实际内存。两者之间的关系(只要maxmemory
不为0)是used_memory
< = maxmemory
。
serializedlength
输出的DEBUG OBJECT
是序列化时该键下存储的值的长度(以字节为单位)。要获取实际的序列化值,可以使用DUMP
命令。请注意,序列化长度不可以准确衡量密钥使用的实际内存量,因为无数因素包括Redis对数据结构的编码和开销。
通常,为了获得maxmemory
设置的估算值,请尝试存储几个代表您数据的100(例如1000)密钥,然后检查used_memory
,除以值和然后将结果乘以具有安全边际的预期键的数量(例如,至少%10)。