有序集合(Sorted Set)常见命令详解
有序集合(Sorted Set,简称zset)是Redis中一种非常特殊的数据结构,它结合了集合(Set)和有序列表(Sorted List)的特点。在有序集合中,每个成员都有一个与之关联的分数(score),Redis会根据这个分数自动对成员进行排序。有序集合非常适合用于实现排行榜等功能。
以下是Redis有序集合的一些常用命令及其详细说明:
添加成员
zadd key score member [score member ...]
- 功能:向有序集合中添加一个或多个成员,并指定每个成员的分数。
- 参数:
key
:有序集合的键。score
:成员的分数(double类型)。member
:要添加到有序集合中的成员,可以是一个或多个。
- 返回值:成功添加的新成员数量。如果成员已经存在于集合中,则更新其分数。
升序查看成员
zrange key start stop [withscores]
- 功能:返回有序集合中指定索引范围内的成员,按分数升序排列。
- 参数:
key
:有序集合的键。start
:起始索引(包含)。stop
:结束索引(包含)。withscores
(可选):如果指定此选项,则返回成员及其分数。
- 返回值:指定索引范围内的成员列表(及可选的分数)。
降序查看成员
zrevrange key start stop [withscores]
- 功能:返回有序集合中指定索引范围内的成员,按分数降序排列。
- 参数与返回值与
zrange
命令相同。
升序查看成员索引位置
zrank key member
- 功能:返回有序集合中指定成员的排名(按分数升序),排名从0开始。
- 参数:
key
:有序集合的键。member
:要查询排名的成员。
- 返回值:成员的排名。如果成员不存在于集合中,则返回
nil
。
降序查看成员排名
zrevrank key member
- 功能:返回有序集合中指定成员的排名(按分数降序),排名从0开始。
- 参数与返回值与
zrank
命令相同。
增加成员分数
zincrby key increment member
- 功能:将有序集合中指定成员的分数增加指定的增量。
- 参数:
key
:有序集合的键。increment
:要增加的分数增量。member
:要增加分数的成员。
- 返回值:增加后的成员分数。
删除成员
zrem key member [member ...]
- 功能:从有序集合中移除一个或多个成员。
- 参数:
key
:有序集合的键。member
:要移除的成员,可以是一个或多个。
- 返回值:成功移除的成员数量。
查看成员数量
zcard key
- 功能:返回有序集合中的成员数量。
- 参数:
key
:有序集合的键。
- 返回值:成员数量。
查看成员分数
zscore key member
- 功能:返回有序集合中指定成员的分数。
- 参数:
key
:有序集合的键。member
:要查询分数的成员。
- 返回值:成员的分数。如果成员不存在于集合中,则返回
nil
。
查看分数区间成员数量
zcount key min max
- 功能:返回有序集合中分数在指定区间内的成员数量。
- 参数:
key
:有序集合的键。min
:区间的最小值。max
:区间的最大值。
- 返回值:指定区间内的成员数量。
升序查看分数区间成员
zrangebyscore key min max [withscores] [limit offset rows]
- 功能:返回有序集合中分数在指定区间内的成员,按分数升序排列,并支持分页查询。
- 参数:
key
:有序集合的键。min
、max
:分数区间的最小值和最大值。withscores
(可选):如果指定此选项,则返回成员及其分数。limit offset rows
(可选):分页参数,offset
表示跳过的成员数量,rows
表示返回的成员数量。
- 返回值:指定区间内的成员列表(及可选的分数)和分页信息。
降序查看分数区间成员
zrevrangebyscore key max min [withscores] [limit offset rows]
- 功能:返回有序集合中分数在指定区间内的成员,按分数降序排列,并支持分页查询。
- 参数与返回值与
zrangebyscore
命令相似,但分数区间和排序方向相反。
删除分数区间成员
zremrangebyscore key min max
- 功能:移除有序集合中分数在指定区间内的所有成员。
- 参数:
key
:有序集合的键。min
、max
:要移除的成员的分数区间的最小值和最大值。
- 返回值:被移除的成员数量。
按字典序查看成员
zrangebylex key min max [limit offset rows]
- 功能:返回有序集合中成员按字典序在指定区间内的所有成员,并支持分页查询。注意,此命令仅按成员的字典序进行排序,与成员的分数无关。
- 参数:
key
:有序集合的键。min
、max
:字典序区间的最小值和最大值,可以使用-
表示最小不限,使用+
表示最大不限,使用[
或(
表示区间是否包含边界值。limit offset rows
(可选):分页参数。
- 返回值:指定区间内的成员列表和分页信息。
这些命令为操作Redis有序集合提供了丰富的功能,适用于各种需要排序和范围查询的场景,如排行榜、成绩列表等。