Redis 有序集合类型(zSet)(数据类型 五)

有序集合(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

使用场景

1.排行榜:

有序集合非常适合用于实现排行榜功能。可以将用户作为成员,将用户的分数作为分数,然后根据分数对用户进行排序。通过有序集合提供的命令,可以轻松地获取排行榜的前几名、指定范围的用户等。

2.任务调度:

有序集合可以用于任务调度,其中成员代表任务,分数代表任务的执行时间。通过维护一个带有执行时间的有序集合,可以定期轮询集合的头部,获取需要执行的任务。

3.范围查询:

有序集合支持根据分数范围进行查询,因此可以用于实现范围查询的场景。例如,可以将时间戳作为分数,然后使用有序集合的范围查询命令获取指定时间范围内的数据。

上一篇:集合类型(Set)和命令

你可能感兴趣的:(Redis学习,redis,数据结构,数据库)