是否有很好的方法来支持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