有没有很好的方法来支持Redis Sorted Set中的pop成员?
是否有很好的方法来支持Redis Sorted Set中的pop成员,就像List的api LPOP一样?
我从Redis Sorted Set弹出消息中发现的是使用ZRANGE +
ZREM,但是它不是线程安全性,并且当多线程同时从不同主机访问它们时需要分布式锁。
请提出建议,是否有更好的方法可以从排序集中弹出成员?
回答:
您可以编写一个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
以上是 有没有很好的方法来支持Redis Sorted Set中的pop成员? 的全部内容, 来源链接: utcz.com/qa/419191.html