Lua脚本读取LRANGE结果的前面几个字节

我想从redis中的一个列表中读取并过滤数据。我想要检查一个blob中前4个字节(一个int32)的数据,以与我传递的int32进行比较。

我已经开始了一个脚本,但是我如何检查前4个字节?

local updates = redis.call('LRANGE', KEYS [1],0-1local ret = {}
for i = 1,#updates do
    --读取int32头
    --如果标题> ARGV [1]
    ret [#ret + 1] = updates [i]
end
返回reT

另外,我看到有一组有限的库:http://redis.io/commands/EVAL#available-libraries

编辑:我做了更多破解,由于LUA如何存储数字,我遇到了问题-ARGV [1]是8字节字符串,不能安全地转换为64位数。我认为这是由于LUA将所有内容存储为双精度浮点数,只有52位精度。

编辑:我接受下面的答案,但更改问题为int32。问题的int64部分我放在了另一个问题中:在Lua中使用32位位运算比较带符号的64位数字

点赞
用户107090
用户107090

Redis 的 Lua 解释器加载了 struct 库,因此可以尝试使用以下代码:

if struct.unpack("I8",updates) > ARGV[1] then
2016-02-17 23:20:02