例如,我使用以下命令创建一个排序集:
zadd key1 1 u1 2 u2 3 u3
现在,我要查询最后2个项目并存储在其他键下,例如key2
。我知道我需要这样查询:
zrange key1 -2 -1
但是我不知道如何用key2
存储结果。抱歉,菜鸟问题,我是Redis的新手,才2个小时:)
答案 0 :(得分:0)
尽管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。
答案 1 :(得分:0)
ZRANGESTORE 已添加到 Redis 6.2