命令介绍
Sorted Sets 族命令用于操作按分数(score)排序的唯一成员集合,是排行榜、优先级队列、延迟任务调度等场景的核心数据结构。其核心命令按功能可分为以下五类:
成员增删与分数操作
ZADD:添加成员及其分数(支持 NX/XX/GT/LT 条件)。
ZREM / ZREMRANGEBYRANK / ZREMRANGEBYSCORE / ZREMRANGEBYLEX:按成员名、排名范围、分数范围或字典序范围删除。
ZINCRBY:原子递增成员分数,适用于实时排行榜计分。
排名与分数查询
ZSCORE / ZMSCORE:查询单个或多个成员的分数。
ZRANK / ZREVRANK:查询成员的正序/倒序排名。
ZCARD / ZCOUNT / ZLEXCOUNT:统计成员总数、分数范围内成员数或字典序范围内成员数。
ZRANDMEMBER:随机返回成员。
范围检索
ZRANGE / ZREVRANGE / ZRANGEBYSCORE / ZREVRANGEBYSCORE / ZRANGEBYLEX / ZREVRANGEBYLEX:按排名、分数或字典序范围检索成员,支持分页(LIMIT)。
ZRANGESTORE:将范围检索结果存入新键。
ZSCAN:以游标方式增量迭代。
集合间运算
ZUNIONSTORE / ZINTERSTORE:求并集或交集并存入新键(支持权重 WEIGHTS 与聚合 AGGREGATE)。
ZDIFF / ZDIFFSTORE / ZINTER / ZUNION:直接返回差集、交集、并集结果。
ZINTERCARD:快速统计交集基数。
弹出操作(队列场景,Redis 5.0+ / Valkey 8.0+)
ZPOPMIN / ZPOPMAX:弹出分数最低/最高的成员。
BZPOPMIN / BZPOPMAX:阻塞式弹出。
ZMPOP / BZMPOP(Redis 7.0+):从多个键中批量弹出,适用于延迟队列消费与优先级调度。
命令支持概览
基础命令:
zadd、zcard、zcount、zincrby、zinterstore、zlexcount、zrange、zrangebylex、zrangebyscore、zrank、zrem、zremrangebylex、zremrangebyrank、zremrangebyscore、zrevrange、zrevrangebylex、zrevrangebyscore、zscore、zrevrank、zscan、zunionstore,Redis 2.8标准架构及4.0、5.0、6.2、7.0版本、Valkey 8.0、9.0的标准架构与集群架构均支持。5.0+ 新增命令:
zpopmax、zpopmin、bzpopmax、bzpopmin,仅 Redis 5.0、6.2、7.0 版本及 Valkey 8.0、9.0 版本支持。6.2+ 新增命令:
zdiff、zdiffstore、zrandmember、zrangestore、zunion、zmscore、zinter,仅 Redis 6.2、7.0 版本及 Valkey 8.0、9.0 版本支持。7.0+ 新增命令:
zmpop、bzmpop、zintercard,仅 Redis 7.0 版本及 Valkey 8.0、9.0 版本支持。跨 Slot 限制:集群架构下,
zinterstore、zunionstore 不支持跨 Slot 操作。命令兼容性矩阵
Sorted Sets 族命令在各版本与架构下的支持情况如下表所示(✓ 表示支持,✗ 表示不支持,— 表示该命令不存在跨 Slot 访问场景)。
命令 | Valkey 9.0标准架构 | Valkey 9.0集群架构 | Redis 7.0/Valkey 8.0标准架构 | Redis 7.0/Valkey 8.0集群架构 | Redis 6.2标准架构 | Redis 6.2集群架构 | Redis 5.0标准架构 | Redis 5.0集群架构 | Redis 4.0标准架构 | Redis 4.0集群架构 | Redis 2.8标准架构 | 集群架构跨 Slot 支持 |
zadd | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
zcard | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
zcount | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
zincrby | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
zinterstore | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ |
zlexcount | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
zrange | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
zrangebylex | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
zrangebyscore | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
zrank | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
zrem | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
zremrangebylex | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
zremrangebyrank | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
zremrangebyscore | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
zrevrange | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
zrevrangebylex | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
zrevrangebyscore | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
zscore | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
zrevrank | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
zscan | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
zunionstore | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ |
zpopmax | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ | ✗ | ✗ | — |
zpopmin | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ | ✗ | ✗ | — |
bzpopmax | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ | ✗ | ✗ | — |
bzpopmin | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ | ✗ | ✗ | — |
zdiff | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | — |
zdiffstore | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | — |
zinter | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | — |
zrandmember | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | — |
zrangestore | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | — |
zunion | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | — |
zmscore | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | — |
zmpop | ✓ | ✓ | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | — |
bzmpop | ✓ | ✓ | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | — |
zintercard | ✓ | ✓ | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | — |