我正在寻找以原子方式弹出 ZSET 元素的 Redis ZPOP 实现,最常见的答案如下:
WATCH zset
element = ZRANGE zset 0 0
MULTI
ZREM zset element
EXEC
我想知道下面的实现是否可以完成同样的工作,看起来更简单?或者它是否存在错误或性能问题?
MULTI
element = ZRANGE zset 0 0
ZREM zset element
EXEC
最佳答案
在 MULTI block 中对 ZRANGE 的调用只会在 EXEC 之后返回,因此第二个版本不会按预期工作。
供您引用,从 Redis v5 开始,已添加 ZPOPMIN 和 ZPOPMAX 命令。
关于redis - Redis ZPOP的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53331352/