gpt4 book ai didi

redis - 如何在脚本中对 lua 表结果进行 zscan

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

我正在编写一个在 Redis 中执行的 Lua 脚本。我正在使用如下所示的排序集:

成员(member):96954_1_1557705600
分数:1557705600

分数是一个 unix 纪元时间戳。

我想首先获得两个时间戳之间的结果,然后根据成员中的 glob 模式过滤那些结果。类似于 MATCH *_1_*

我的脚本看起来像这样,但是当我尝试将 Lua 表传递给 zscan 时它失败了:

本地开始日期 = KEYS[1]
本地结束日期 = KEYS[2]
local limited_by_date = redis.call('zrangebyscore','rooms', start_date, end_date)
return redis.call('zscan', unpack(limited_by_date), 'match *_1_*')

limited_by_date 正确包含我期望的值,但我现在如何使用 zscan 搜索它们?

最佳答案

当你得到 limited_by_date 时,你可以自己迭代数组,并输出与模式匹配的项目。

local result = {}
for i, mem in ipairs(limited_by_date) do
if string.match(mem, ".+_1_.+") then result[#result + 1] = mem end
end

return result

无需使用 ZSCAN 命令。事实上,如果您使用 ZSCAN,您必须将 ZSCAN 结果与 ZRANGEBYSCORE 结果相交才能得到最终答案。

关于redis - 如何在脚本中对 lua 表结果进行 zscan,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53454759/

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