小编典典

有没有很好的方法来支持Redis Sorted Set中的pop成员?

redis

是否有很好的方法来支持Redis Sorted Set中的pop成员,就像List的api LPOP一样?

我从Redis Sorted Set弹出消息中发现的是使用ZRANGE +
ZREM,但是它不是线程安全性,并且当多线程同时从不同主机访问它们时需要分布式锁。

请提出建议,是否有更好的方法可以从排序集中弹出成员?


阅读 592

收藏
2020-06-20

共1个答案

小编典典

您可以编写一个Lua脚本来完成这项工作:将这两个命令包装在一个Lua脚本中。Redis确保Lua脚本以原子方式运行。

local key = KEYS[1]
local result = redis.call('ZRANGE', key, 0, 0)
local member = result[1]
if member then
    redis.call('ZREM', key, member)
    return member
else
    return nil
end
2020-06-20