有序集合(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) 的相关命令介绍。这些命令可以帮助我们更好地管理和操作有序集合,从而实现复杂的数据处理需求。