redis - Redis ZPOP的实现

标签 redis transactions zset

我正在寻找以原子方式弹出 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/

相关文章:

database-design - 我应该检查还是只在 Redis 中设置记录?

database - 数据完整性和数据一致性之间有什么区别吗?

sqlite - 如何编写回滚任何错误的 sqlite 事务

php - 交易错误

sorting - 获取redis中key的权重

indexing - 使用Redis排序集建立索引

Django 和 Redis 包选项

c# - Redis - 哪种数据类型是存储数据的最有效方式