Redis(16)Redis的有序集合(Sorted Set)类型有哪些常用命令?

Redis 的有序集合(Sorted Set)类型是一个带有分数的无序集合,分数用于排序。每个元素都是唯一的,但分数可以重复。Sorted Set 类型支持一系列常用命令,下面详细介绍这些命令,并结合代码示例进行展示。

1. ZADD - 向有序集合添加一个或多个成员,并设置分数

ZADD 命令用于向有序集合添加一个或多个成员,并设置分数。如果成员已存在,则更新其分数。

bash 复制代码
ZADD key [NX|XX] [CH] [INCR] score member [score member ...]

示例:

bash 复制代码
ZADD myzset 1 "one"
ZADD myzset 2 "two"

2. ZREM - 移除有序集合中的一个或多个成员

ZREM 命令用于移除有序集合中的一个或多个成员。

bash 复制代码
ZREM key member [member ...]

示例:

bash 复制代码
ZREM myzset "two"

3. ZSCORE - 获取有序集合中成员的分数

ZSCORE 命令用于获取有序集合中成员的分数。

bash 复制代码
ZSCORE key member

示例:

bash 复制代码
ZSCORE myzset "one"

4. ZRANK - 获取有序集合中成员的排名(按分数从低到高)

ZRANK 命令用于获取有序集合中成员的排名(按分数从低到高),排名从 0 开始。

bash 复制代码
ZRANK key member

示例:

bash 复制代码
ZRANK myzset "one"

5. ZREVRANK - 获取有序集合中成员的排名(按分数从高到低)

ZREVRANK 命令用于获取有序集合中成员的排名(按分数从高到低),排名从 0 开始。

bash 复制代码
ZREVRANK key member

示例:

bash 复制代码
ZREVRANK myzset "one"

6. ZRANGE - 按排名范围获取有序集合中的成员(从低到高)

ZRANGE 命令用于按排名范围获取有序集合中的成员(从低到高)。

bash 复制代码
ZRANGE key start stop [WITHSCORES]

示例:

bash 复制代码
ZRANGE myzset 0 -1  # 获取所有成员
ZRANGE myzset 0 -1 WITHSCORES  # 获取所有成员及其分数

7. ZREVRANGE - 按排名范围获取有序集合中的成员(从高到低)

ZREVRANGE 命令用于按排名范围获取有序集合中的成员(从高到低)。

bash 复制代码
ZREVRANGE key start stop [WITHSCORES]

示例:

bash 复制代码
ZREVRANGE myzset 0 -1  # 获取所有成员
ZREVRANGE myzset 0 -1 WITHSCORES  # 获取所有成员及其分数

8. ZRANGEBYSCORE - 按分数范围获取有序集合中的成员

ZRANGEBYSCORE 命令用于按分数范围获取有序集合中的成员。

bash 复制代码
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]

示例:

bash 复制代码
ZRANGEBYSCORE myzset 0 2  # 获取分数在0到2之间的成员
ZRANGEBYSCORE myzset 0 2 WITHSCORES  # 获取分数在0到2之间的成员及其分数
ZRANGEBYSCORE myzset 0 2 LIMIT 0 1  # 获取分数在0到2之间的第一个成员

9. ZREVRANGEBYSCORE - 按分数范围倒序获取有序集合中的成员

ZREVRANGEBYSCORE 命令用于按分数范围倒序获取有序集合中的成员。

bash 复制代码
ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]

示例:

bash 复制代码
ZREVRANGEBYSCORE myzset 2 0  # 获取分数在2到0之间的成员
ZREVRANGEBYSCORE myzset 2 0 WITHSCORES  # 获取分数在2到0之间的成员及其分数
ZREVRANGEBYSCORE myzset 2 0 LIMIT 0 1  # 获取分数在2到0之间的第一个成员

10. ZREM - 移除有序集合中的一个或多个成员

ZREM 命令用于移除有序集合中的一个或多个成员。

bash 复制代码
ZREM key member [member ...]

示例:

bash 复制代码
ZREM myzset "one"

11. ZREMRANGEBYRANK - 移除有序集合中指定排名范围的成员

ZREMRANGEBYRANK 命令用于移除有序集合中指定排名范围的成员。

bash 复制代码
ZREMRANGEBYRANK key start stop

示例:

bash 复制代码
ZREMRANGEBYRANK myzset 0 1  # 移除排名在0到1之间的成员

12. ZREMRANGEBYSCORE - 移除有序集合中指定分数范围的成员

ZREMRANGEBYSCORE 命令用于移除有序集合中指定分数范围的成员。

bash 复制代码
ZREMRANGEBYSCORE key min max

示例:

bash 复制代码
ZREMRANGEBYSCORE myzset 0 1  # 移除分数在0到1之间的成员

13. ZINCRBY - 增加有序集合中某个成员的分数

ZINCRBY 命令用于增加有序集合中某个成员的分数。

bash 复制代码
ZINCRBY key increment member

示例:

bash 复制代码
ZINCRBY myzset 2 "one"  # 增加 "one" 的分数2

14. ZINTERSTORE - 计算给定的一个或多个有序集的交集, 并将其储存到新的集合中

ZINTERSTORE 命令用于计算给定的一个或多个有序集的交集,并将其储存到新的集合中。

bash 复制代码
ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]

示例:

bash 复制代码
ZADD zset1 1 "one"
ZADD zset1 2 "two"
ZADD zset2 1 "one"
ZADD zset2 2 "two"
ZINTERSTORE out 2 zset1 zset2
ZRANGE out 0 -1 WITHSCORES

15. ZUNIONSTORE - 计算给定的一个或多个有序集的并集,并将其储存到新的集合中

ZUNIONSTORE 命令用于计算给定的一个或多个有序集的并集,并将其储存到新的集合中。

bash 复制代码
ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]

示例:

bash 复制代码
ZADD zset1 1 "one"
ZADD zset1 2 "two"
ZADD zset2 1 "one"
ZADD zset2 2 "two"
ZUNIONSTORE out 2 zset1 zset2
ZRANGE out 0 -1 WITHSCORES

示例代码

下面是一个完整的示例,展示了如何使用上述常用命令操作 Redis 有序集合类型:

bash 复制代码
# 启动 Redis CLI
redis-cli

# 向有序集合添加元素
ZADD myzset 1 "one"
ZADD myzset 2 "two"

# 获取有序集合中成员的分数
ZSCORE myzset "one"  # 输出: "1"

# 获取有序集合中成员的排名
ZRANK myzset "one"  # 输出: 0
ZREVRANK myzset "one"  # 输出: 1

# 按排名范围获取有序集合中的成员
ZRANGE myzset 0 -1  # 输出: 1) "one"  2) "two"
ZRANGE myzset 0 -1 WITHSCORES  # 输出: 1) "one"  2) "1"  3) "two"  4) "2"

# 按分数范围获取有序集合中的成员
ZRANGEBYSCORE myzset 0 2  # 输出: 1) "one"  2) "two"
ZRANGEBYSCORE myzset 0 2 WITHSCORES  # 输出: 1
相关推荐
学编程的小鬼3 小时前
SpringBoot 自动装配原理剖析
java·spring boot·后端
码事漫谈3 小时前
SIMD编程入门:让性能飞起来的实践指南
后端
码事漫谈3 小时前
从汇编角度看C++优化:编译器真正做了什么
后端
老葱头蒸鸡5 小时前
(28)ASP.NET Core8.0 SOLID原则
后端·asp.net
拾忆,想起6 小时前
AMQP协议深度解析:消息队列背后的通信魔法
java·开发语言·spring boot·后端·spring cloud
PH = 76 小时前
Spring Ai Alibaba开发指南
java·后端·spring
不会吃萝卜的兔子6 小时前
springboot websocket 原理
spring boot·后端·websocket
Fency咖啡7 小时前
Spring Boot 内置日志框架 Logback - 以及 lombok 介绍
spring boot·后端·logback
karry_k8 小时前
什么是Fork/Join?
java·后端
karry_k9 小时前
四大函数式接口与Stream流式计算
后端