gpt4 book ai didi

lua - 使用 Lua 脚本读取 lrange 结果的第一个字节

转载 作者:IT王子 更新时间:2023-10-29 06:05:23 28 4
gpt4 key购买 nike

我想从 redis 中的列表中读取和过滤数据。我想检查 blob 中数据的前 4 个字节(int32)以与我将作为 ARG 传入的 int32 进行比较。

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

local updates = redis.call('LRANGE', KEYS[1], 0, -1)

local ret = {}
for i=1,#updates do
-- read int32 header
-- if header > ARGV[1]
ret[#ret+1] = updates[i]
end
return ret

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

编辑:再仔细研究一下,由于 LUA 存储数字的方式,我遇到了问题 - ARGV[1] 是一个 8 字节字符串,无法安全地转换为 64 位数字。我认为这是由于 LUA 将所有内容都存储为 double ,只有 52 位精度。

编辑:我接受下面的答案,但将问题更改为 int32。问题的int64部分我放到另外一个问题:Comparing signed 64 bit number using 32 bit bitwise operations in Lua

最佳答案

Redis Lua 解释器加载struct 库,所以尝试

if struct.unpack("I8",updates) > ARGV[1] then

关于lua - 使用 Lua 脚本读取 lrange 结果的第一个字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35468370/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com