Redis中有序集合(Sorted Set)常见命令详解

发布于:2025-02-22 ⋅ 阅读:(17) ⋅ 点赞:(0)

有序集合(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:有序集合的键。
      • minmax:分数区间的最小值和最大值。
      • withscores(可选):如果指定此选项,则返回成员及其分数。
      • limit offset rows(可选):分页参数,offset表示跳过的成员数量,rows表示返回的成员数量。
    • 返回值:指定区间内的成员列表(及可选的分数)和分页信息。

降序查看分数区间成员

  • zrevrangebyscore key max min [withscores] [limit offset rows]
    • 功能:返回有序集合中分数在指定区间内的成员,按分数降序排列,并支持分页查询。
    • 参数返回值zrangebyscore命令相似,但分数区间和排序方向相反。

删除分数区间成员

  • zremrangebyscore key min max
    • 功能:移除有序集合中分数在指定区间内的所有成员。
    • 参数
      • key:有序集合的键。
      • minmax:要移除的成员的分数区间的最小值和最大值。
    • 返回值:被移除的成员数量。

按字典序查看成员

  • zrangebylex key min max [limit offset rows]
    • 功能:返回有序集合中成员按字典序在指定区间内的所有成员,并支持分页查询。注意,此命令仅按成员的字典序进行排序,与成员的分数无关。
    • 参数
      • key:有序集合的键。
      • minmax:字典序区间的最小值和最大值,可以使用-表示最小不限,使用+表示最大不限,使用[(表示区间是否包含边界值。
      • limit offset rows(可选):分页参数。
    • 返回值:指定区间内的成员列表和分页信息。

这些命令为操作Redis有序集合提供了丰富的功能,适用于各种需要排序和范围查询的场景,如排行榜、成绩列表等。