gpt4 book ai didi

Redis - 如何将 zrange 查询的结果存储为另一个有序集

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

例如我用这个命令创建一个排序集:

zadd key1 1 u1 2 u2 3 u3

现在我要查询最后 2 个项目并存储在其他键下,比如 key2。我知道我需要这样查询:

zrange key1 -2 -1

但我不知道如何使用key2 存储结果。抱歉,菜鸟问题,我是 Redis 的新手,只需 2 小时 :)

最佳答案

虽然 Redis 没有内置命令来执行此操作,但您可以使用 Lua 脚本轻松安全地完成操作。这一点有点棘手,因为 ZRANGE 的回复需要在成员分数对之间进行交换,以用作 ZADD 的输入。

local src, dst = KEYS[1], KEYS[2]
local from, to = ARGV[1], ARGV[2]

local payload = redis.call('ZRANGE', src, from, to, 'WITHSCORES')

for i = 1, #payload/2 do
payload[2*i-1], payload[2*i] = payload[2*i], payload[2*i-1]
end

return redis.call('ZADD', dst, unpack(payload))

有关如何在 Redis 中使用 Lua 的详细信息,请参阅 EVAL commmand .

关于Redis - 如何将 zrange 查询的结果存储为另一个有序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53412176/

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