Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在lua脚本中找到特定的redis密钥内存大小_Lua_Redis - Fatal编程技术网

如何在lua脚本中找到特定的redis密钥内存大小

如何在lua脚本中找到特定的redis密钥内存大小,lua,redis,Lua,Redis,这里的“调试对象”在redis cli上成功运行,但如果我们想在多个键上运行lua脚本。这样的发送错误 (错误)运行脚本时出错(调用f_b003d960240545d9540ebc2319d863221045 3815):从Lua脚本调用Redis命令的参数数目错误调试对象不是一个好的选择。它显示值的序列化长度,因此它只是存储在RDB文件上的对象的大小 要了解Redis中对象的大小,需要使用更复杂的技术,但只能得到近似值。您需要运行: 类型 对象编码 用于获取其长度的对象类型特定命令 对几个元素

这里的“调试对象”在redis cli上成功运行,但如果我们想在多个键上运行lua脚本。这样的发送错误

(错误)运行脚本时出错(调用f_b003d960240545d9540ebc2319d863221045
3815):从Lua脚本调用Redis命令的参数数目错误

调试对象不是一个好的选择
。它显示值的序列化长度,因此它只是存储在RDB文件上的对象的大小

要了解Redis中对象的大小,需要使用更复杂的技术,但只能得到近似值。您需要运行:

  • 类型
  • 对象编码
  • 用于获取其长度的对象类型特定命令
  • 对几个元素进行采样,以了解对象的平均字符串长度
  • 基于这四个信息,您需要检查Redis源代码,以检查所使用的内部结构的不同内存占用,并进行计算。不容易

    更可行的近似方法是仅使用:

    使用的近似值=元素数*平均大小*开销系数

    您可能希望选择一个开销因素,它对各种数据类型都有意义。误差很大,但对于某些用例来说,这是一个足够好的近似值。也许开销系数可能是2


    TLDR:您试图做的事情很复杂,并且会导致错误。未来的想法是提供一个
    内存
    命令,该命令可以执行此操作。

    Re。记忆-奥兰和我正在准备一份完全一样的公关!:)酷!这无疑会加快将该功能纳入Redis的速度。
    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