redis.call('select','14')
local allKeys = redis.call('keys','orgId#1:logs:email:uid#*')
for i = 1 , #allKeys ,1
do
local object11 = redis.call('DEBUG OBJECT',allKeys[i])
print("kk",object11[1])
end
这里" DEBUG OBJECT"在redis-cli上成功运行,但是如果我们想在多个键上运行lua脚本。这样发送错误。
(错误)ERR运行脚本时出错(调用f_b003d960240545d9540ebc2319d863221045 3815):从Lua脚本调用Redis命令的args数量错误
答案 0 :(得分:2)
DEBUG OBJECT is not a good bet
。它显示了值的序列化长度,因此它只是存储在RDB文件中的对象大小。
要想了解Redis中对象大小的一些提示,您需要采用更复杂的技术,但只能得到近似值。你需要运行:
基于这四个信息,您需要检查Redis源代码以检查所使用的内部结构的不同内存占用量,并进行数学运算。不容易......
更可行的近似就是使用:
APPROX_USED_MEM = num_elements * avg_size * overhead_factor
您可能希望选择一个对各种数据类型有意义的开销因子。错误很大,但对于某些用例来说,这是一个足够好的近似值。也许overhead_factor可能是2。
TLDR:您要做的事情很复杂并导致错误。在未来,我们的想法是提供一个能够执行此操作的MEMORY
命令。