有序集合(Sorted Set)是一种特殊的集合数据结构,它以有序的方式存储成员,并为每个成员分配一个分数(score)。有序集合使用分数对成员进行排序,并允许快速访问、插入和删除操作.
添加:
zadd key score1 member1 score2 member2 …:向有序集合中添加一个或多个成员,每个成员都有一个对应的分数。
# 向排行榜中添加用户和对应的分数。
zadd leaderboard 100 alice 200 bob 150 charlie
删除:
zrem key member1 member2 …:从有序集合中删除一个或多个成员。
# 从排行榜中删除指定用户。
zrem leaderboard alice
获取:
zscore key member:获取成员在有序集合中的分数。
# 获取指定用户在排行榜有序集合中的分数。
zscore leaderboard alice
zrank key member:获取成员在有序集合中的排名(从小到大)。
# 获取指定用户在排行榜中的排名。
zrank leaderboard alice
zrevrank key member:获取成员在有序集合中的排名(从大到小)。
# 获取指定用户在排行榜中的倒序排名。
zrevrank leaderboard alice
范围查询:
zrange key start stop [WITHSCORES]:按照排名范围获取有序集合中的成员。
# 获取排行榜中排名为2到4的用户及其分数。
zrange leaderboard 1 3 WITHSCORES
zrevrange key start stop [WITHSCORES]:按照倒序排名范围获取有序集合中的成员。
# 获取排行榜有序集合中倒序排名为2到4的用户及其分数。
zrevrange leaderboard 1 3 WITHSCORES
zrangebyscore key min max [WITHSCORES] [LIMIT offset count]:按照分数范围获取有序集合中的成员。
# 获取排行榜有序集合中分数在100到200之间的用户及其分数。
zrangebyscore leaderboard 100 200 WITHSCORES
zcard key:获取有序集合的成员数量。
# 获取排行榜有序集合的成员数量。
zcard leaderboard
zcount key min max:获取有序集合中分数在指定范围内的成员数量。
# 获取排行榜有序集合中分数在100到200之间的成员数量。
zcount leaderboard 100 200
集合操作:
zunionstore destination numkeys key1 key2 … [WEIGHTS weight1 weight2 …] [AGGREGATE SUM|MIN|MAX]:计算多个有序集合的并集,并将结果存储到指定的目标有序集合中。
# 计算多个排行榜有序集合的并集,并将结果存储到新的有序集合中。
zunionstore merged_leaderboard 2 leaderboard1 leaderboard2 WEIGHTS 2 3 AGGREGATE SUM
zinterstore destination numkeys key1 key2 … [WEIGHTS weight1 weight2 …] [AGGREGATE SUM|MIN|MAX]:计算多个有序集合的交集,并将结果存储到指定的目标有序集合中。
# 计算多个排行榜的交集,并将结果存储到新的排行榜中。
zinterstore common_leaderboard 2 leaderboard1 leaderboard2 WEIGHTS 2 3 AGGREGATE SUM
有序集合非常适合用于实现排行榜功能。可以将用户作为成员,将用户的分数作为分数,然后根据分数对用户进行排序。通过有序集合提供的命令,可以轻松地获取排行榜的前几名、指定范围的用户等。
有序集合可以用于任务调度,其中成员代表任务,分数代表任务的执行时间。通过维护一个带有执行时间的有序集合,可以定期轮询集合的头部,获取需要执行的任务。
有序集合支持根据分数范围进行查询,因此可以用于实现范围查询的场景。例如,可以将时间戳作为分数,然后使用有序集合的范围查询命令获取指定时间范围内的数据。
上一篇:集合类型(Set)和命令