我的redis键使用各种主题(例如Topic:SubTopic:Key
)进行排序。
我想找到Topic:*
或Topic:SubTopic:*
节的字节大小。
在一个主题下,我可以拥有各种条目(列表,字符串,哈希,集合等)。
现在,我知道cli具有memory usage <key>
命令,但是我想以某种方式使用lua在redis服务器上调用它。
我的方法是运行类似的内容
eval "local keys = redis.call('keys',KEYS[1]) ; local sum=0 ; for _,k in ipairs(keys) do sum = sum + redis.call('memory usage', k) end ; return sum" 1 Topic:SubTopic:*
我知道此命令会影响性能,因此我将离线运行此命令只是为了分析我们的数据结构,而不是在生产环境中。
我的主要问题是我找不到Redis服务器命令来查找类似于cli命令的键的内存使用情况。
问题:
是否有更好的方法来分析我的钥匙?使用bigkeys
是不够的。
如果没有,我是否可以在lua脚本中运行任何等效的内存使用命令来获取密钥的字节大小?
答案 0 :(得分:1)
您可以调用MEMORY USAGE
来获取字节大小,包括给定键和值的开销。
注意:即使离线运行,也应在Lua脚本中使用SCAN
而不是KEYS
-这样可以减少脚本的运行时内存消耗,并防止沙箱堆栈溢出。