有序集合(sorted set) 是 Redis 中一种非常重要的数据结构。它与集合(set)类似,但每个元素都关联了一个分数(score),使得我们可以根据分数对元素进行排序。这种数据结构非常适合用于排行榜、计分系统等场景。
下面将详细介绍 Redis 有序集合(sorted set) 的相关命令。
ZADD - 添加成员到有序集合
ZADD key score member [score member ...]
使用 ZADD
命令可以向有序集合中添加成员。如果成员已经存在,则会更新其分数,并且重新排序。
示例
ZADD myzset 1 "one" ZADD myzset 2 "two"
上述命令将会创建一个名为 myzset
的有序集合,并添加两个成员,分别为 "one"
和 "two"
,它们的分数分别是 1
和 2
。
ZREM - 删除有序集合中的成员
ZREM key member [member ...]
使用 ZREM
命令可以从有序集合中删除指定的成员。
示例
ZREM myzset "one"
上述命令将会从 myzset
中删除成员 "one"
。
ZINCRBY - 增加有序集合中成员的分数
ZINCRBY key increment member
使用 ZINCRBY
命令可以增加或减少有序集合中成员的分数。
示例
ZINCRBY myzset 2 "two"
上述命令将会把 myzset
中成员 "two"
的分数增加 2
。
ZCARD - 获取有序集合的成员数量
ZCARD key
使用 ZCARD
命令可以获取有序集合中成员的数量。
示例
ZCARD myzset
上述命令将会返回 myzset
中成员的数量。
ZCOUNT - 统计指定分数范围内的成员数量
ZCOUNT key min max
使用 ZCOUNT
命令可以统计有序集合中分数在指定范围内的成员数量。
示例
ZCOUNT myzset -inf 5
上述命令将会返回 myzset
中分数在 -inf
到 5
之间的成员数量。
ZRANGE - 获取指定索引范围内的成员
ZRANGE key start stop [WITHSCORES]
使用 ZRANGE
命令可以获取有序集合中指定索引范围内的成员。如果指定了 WITHSCORES
参数,则会同时返回成员的分数。
示例
ZRANGE myzset 0 -1 WITHSCORES
上述命令将会返回 myzset
中所有成员及其分数。
ZREVRANGE - 获取指定索引范围内的成员(逆序)
ZREVRANGE key start stop [WITHSCORES]
使用 ZREVRANGE
命令可以获取有序集合中指定索引范围内的成员,但返回的结果是按照分数降序排列的。如果指定了 WITHSCORES
参数,则会同时返回成员的分数。
示例
ZREVRANGE myzset 0 -1 WITHSCORES
上述命令将会返回 myzset
中所有成员及其分数,结果是按分数降序排列的。
ZRANGEBYSCORE - 获取指定分数范围内的成员
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
使用 ZRANGEBYSCORE
命令可以获取有序集合中分数在指定范围内的成员。如果指定了 WITHSCORES
参数,则会同时返回成员的分数。如果指定了 LIMIT
参数,则可以限制返回的结果数量。
示例
ZRANGEBYSCORE myzset 1 5 WITHSCORES LIMIT 0 3
上述命令将会返回 myzset
中分数在 1
到 5
之间的前三个成员及其分数。
ZREVRANGEBYSCORE - 获取指定分数范围内的成员(逆序)
ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]
使用 ZREVRANGEBYSCORE
命令可以获取有序集合中分数在指定范围内的成员,但返回的结果是按照分数降序排列的。如果指定了 WITHSCORES
参数,则会同时返回成员的分数。如果指定了 LIMIT
参数,则可以限制返回的结果数量。
示例
ZREVRANGEBYSCORE myzset 5 1 WITHSCORES LIMIT 0 3
上述命令将会返回 myzset
中分数在 5
到 1
之间的前三个成员及其分数。
ZRANK - 获取成员在有序集合中的排名(正序)
ZRANK key member
使用 ZRANK
命令可以获取成员在有序集合中的排名。排名是从 0
开始的,且结果是按照分数升序排列的。
示例
ZRANK myzset "three"
上述命令将会返回 myzset
中成员 "three"
的排名。
ZREVRANK - 获取成员在有序集合中的排名(逆序)
ZREVRANK key member
使用 ZREVRANK
命令可以获取成员在有序集合中的排名。排名是从 0
开始的,且结果是按照分数降序排列的。
示例
ZREVRANK myzset "three"
上述命令将会返回 myzset
中成员 "three"
的排名。
ZSCORE - 获取成员的分数
ZSCORE key member
使用 ZSCORE
命令可以获取成员在有序集合中的分数。
示例
ZSCORE myzset "three"
上述命令将会返回 myzset
中成员 "three"
的分数。
ZREM_RANGE_BY_RANK - 删除指定排名范围内的成员
ZREMRANGEBYRANK key start stop
使用 ZREMRANGEBYRANK
命令可以删除有序集合中指定排名范围内的成员。排名是从 0
开始的,且结果是按照分数升序排列的。
示例
ZREMRANGEBYRANK myzset 0 1
上述命令将会删除 myzset
中排名在 0
到 1
之间的成员。
ZREM_RANGE_BY_SCORE - 删除指定分数范围内的成员
ZREMRANGEBYSCORE key min max
使用 ZREMRANGEBYSCORE
命令可以删除有序集合中分数在指定范围内的成员。
示例
ZREMRANGEBYSCORE myzset 1 5
上述命令将会删除 myzset
中分数在 1
到 5
之间的成员。
ZLEXCOUNT - 统计指定字典区间内的成员数量
ZLEXCOUNT key min max
使用 ZLEXCOUNT
命令可以统计有序集合中字典区间内的成员数量。这个命令适用于当成员的分数是字符串类型时。
示例
ZLEXCOUNT myzset "[a" "[f"
上述命令将会返回 myzset
中字典区间 [a, f)
内的成员数量。
ZRANGEBYLEX - 获取指定字典区间内的成员
ZRANGEBYLEX key min max [LIMIT offset count]
使用 ZRANGEBYLEX
命令可以获取有序集合中字典区间内的成员。这个命令适用于当成员的分数是字符串类型时。
示例
ZRANGEBYLEX myzset "[a" "[f" LIMIT 0 3
上述命令将会返回 myzset
中字典区间 [a, f)
内的前三个成员。
ZREVRANGEBYLEX - 获取指定字典区间内的成员(逆序)
ZREVRANGEBYLEX key max min [LIMIT offset count]
使用 ZREVRANGEBYLEX
命令可以获取有序集合中字典区间内的成员,但返回的结果是按照字典逆序排列的。这个命令适用于当成员的分数是字符串类型时。
示例
ZREVRANGEBYLEX myzset "[f" "[a" LIMIT 0 3
上述命令将会返回 myzset
中字典区间 [f, a]
内的前三个成员。
以上就是 Redis 有序集合(sorted set) 的相关命令介绍。这些命令可以帮助我们更好地管理和操作有序集合,从而实现复杂的数据处理需求。