如何从Redis排序集中弹出?

时间:2014-09-17 00:43:07

标签: ruby-on-rails ruby redis

我使用Redis排序集作为队列来维护用户列表,我需要弹出列表中的第一项并使用它,但我遇到了问题。这是我的尝试......

keys = []
$redis.multi do
    # Get the item at the top of the sorted set
    keys = $redis.zrange("users:waiting", 0, 0)

    # Remove it from the set
    $redis.zrem("users:waiting", keys[0])
end

# Get the item from the range
@user_id = keys[0]

...但是这段代码不起作用。救命!提前感谢您的智慧!

1 个答案:

答案 0 :(得分:1)

它不起作用的原因是因为MULTI。

键未分配。最后发生的对EXEC的调用是返回这些结果的时候

请参阅https://github.com/redis/redis-rb#executing-commands-atomically

就在https://github.com/redis/redis-rb#futures

之下

应该显示差异:)道歉,如果这不完全正确,因为我不使用Ruby。