数据类型与API(5)Sorted Set

简介: Sorted Set (有序集合)特点有序无重复集合间操作


Sorted Set (有序集合)



特点

  • 有序
  • 无重复
  • 集合间操作


集合 VS 有序集合

集合 有序集合
无重复元素 无重复元素
无序 有序
element element + score


列表 VS 有序集合

列表 有序集合
可以有重复元素 无重复元素
有序 有序
element element + score


常用命令

操作类型 命令
基本操作 zadd、zrem、zcard、zincrby、zscore
范围操作 zrange、zrangebyscore、zcount、zremrangebyrank
集合操作 zunionstore、zinterstore


命令 含义 时间复杂度
zadd 将一个或多个 member 元素及其 score 值加入到有序集 key 当中 O( M * log(N) ), N 是有序集的基数, M 为成功添加的新成员的数量
zrem 移除有序集 key 中的一个或多个成员,不存在的成员将被忽略 O(M*log(N)), N 为有序集的基数, M 为被成功移除的成员的数量。
zscore 元素的分数 O(1)
zincrby 增加或减少元素的分数 O(log(N))
zcard 元素的总个数 O(1)
zrange 返回指定索引范围内的升序元素【和分值】 O(log(N) + M),N 为有序集的基数,而 M 为结果集的基数
zrangebyscore 返回指定分数范围内的升序元素【和分值】 O(log(N) + M),N 为有序集的基数,而 M 为结果集的基数
zcount 返回有序结合内,在指定分数范围内的元素个数 O(log(N) + M),N 为有序集的基数, M 为值在 min 和 max 之间的元素的数量
zremrangebyrank 删除指定排名内的升序元素 O(log(N) + M),N 为有序集的基数,而 M 为被移除成员的数量
zremrangebyscore 删除指定分数内的升序元素 O(log(N) + M),N 为有序集的基数, M 为结果集的基数


zadd

  • zadd key score element(可以是多对)(向有序集合key添加score和element)

zrem

  • zrem key element(可以是多个) (删除指定元素)

zscore

  • zscore key element (返回元素的分数)

zincrby

  • zincrby key increScore element (增加或减少元素的分数)

zcard

  • zcard key (返回元素的总个数)

zrange

  • zrange key start end [withscores] (返回指定索引范围内的升序元素【和分值】)

zrangebyscore

  • ZRANGEBYSCORE key minScore maxScore [WITHSCORES] [LIMIT offset count] (返回指定分数范围内的升序元素【和分值】)
ZRANGEBYSCORE key -inf +inf # 显示整个有序集

zcount

  • zcount key minScore maxScore (返回有序结合内,在指定分数范围内的元素个数)

zremrangebyrank

  • zremrangebyrank key start end (删除指定排名内的升序元素)

zremrangebyscore

  • zremrangebyscore key minScore maxScore (删除指定分数内的升序元素)
127.0.0.1:6379> zadd report 100 xiaoming 98 xiaohong 85 laowang 60 zhangsan 55 lisi
(integer) 5
127.0.0.1:6379> zscore report laowang
"85"
127.0.0.1:6379> zcard report
(integer) 5
127.0.0.1:6379> zrank report xiaohong
(integer) 3
127.0.0.1:6379> zrank report xiaoming
(integer) 4
127.0.0.1:6379> zrem report lisi
(integer) 1
127.0.0.1:6379> zrange report 0 -1 withscores
1) "zhangsan"
2) "60"
3) "laowang"
4) "85"
5) "xiaohong"
6) "98"
7) "xiaoming"
8) "100"
127.0.0.1:6379> zrangebyscore report 85 100 withscores
1) "laowang"
2) "85"
3) "xiaohong"
4) "98"
5) "xiaoming"
6) "100"
127.0.0.1:6379> zcount report 85 100
(integer) 3
127.0.0.1:6379> zremrangebyrank report 1 1
(integer) 1
127.0.0.1:6379> zrange report 0 -1 withscores
1) "zhangsan"
2) "60"
3) "xiaohong"
4) "98"
5) "xiaoming"
6) "100"
127.0.0.1:6379> zremrangebyscore report 85 98
(integer) 1
127.0.0.1:6379> zrange report 0 -1 withscores
1) "zhangsan"
2) "60"
3) "xiaoming"
4) "100"


其他命令

  • zrevrank
  • zrevrange
  • zrevrangebyscore
  • zinterstore
  • zunionstore
相关文章
|
1月前
|
存储 NoSQL 算法
Redis6入门到实战------ 三、常用五大数据类型(列表(List)、集合(Set)、哈希(Hash)、Zset(sorted set))
这是关于Redis 6入门到实战的文章,具体内容涉及Redis的五大数据类型:列表(List)、集合(Set)、哈希(Hash)、有序集合(Zset(sorted set))。文章详细介绍了这些数据类型的特点、常用命令以及它们背后的数据结构。如果您有任何关于Redis的具体问题或需要进一步的帮助,请随时告诉我。
|
26天前
|
XML 缓存 API
【Azure API 管理】使用APIM进行XML内容读取时遇见的诡异错误 Expression evaluation failed. Object reference not set to an instance of an object.
【Azure API 管理】使用APIM进行XML内容读取时遇见的诡异错误 Expression evaluation failed. Object reference not set to an instance of an object.
|
29天前
|
测试技术 索引 Python
Python接口自动化测试框架(基础篇)-- 常用数据类型list&set()
本文介绍了Python中list和set两种数据类型的使用,包括它们的创建、取值、增删改查操作、排序以及内置函数的使用,还探讨了list的比较函数和set的快速去重功能。
17 0
|
2月前
|
NoSQL Redis
Redis set数据类型命令使用及应用场景使用总结
Redis set数据类型命令使用及应用场景使用总结
32 1
|
2月前
|
消息中间件 JSON NoSQL
Redis深度解析:核心数据类型之hash、list、set
Redis深度解析:核心数据类型之hash、list、set
|
2月前
|
JavaScript API 索引
JS【详解】Set 集合 (含 Set 集合和 Array 数组的区别,Set 的 API,Set 与 Array 的性能对比,Set 的应用场景)
JS【详解】Set 集合 (含 Set 集合和 Array 数组的区别,Set 的 API,Set 与 Array 的性能对比,Set 的应用场景)
44 0
|
4月前
|
SQL NoSQL Java
Redis数据类型 Hash Set Zset Bitmap HyperLogLog GEO
Redis数据类型 Hash Set Zset Bitmap HyperLogLog GEO
46 0
|
4月前
|
Java 数据库连接 API
Java 学习路线:基础知识、数据类型、条件语句、函数、循环、异常处理、数据结构、面向对象编程、包、文件和 API
Java 是一种广泛使用的、面向对象的编程语言,始于1995年,以其跨平台性、安全性和可靠性著称,应用于从移动设备到数据中心的各种场景。基础概念包括变量(如局部、实例和静态变量)、数据类型(原始和非原始)、条件语句(if、else、switch等)、函数、循环、异常处理、数据结构(如数组、链表)和面向对象编程(类、接口、继承等)。深入学习还包括包、内存管理、集合框架、序列化、网络套接字、泛型、流、JVM、垃圾回收和线程。构建工具如Gradle、Maven和Ant简化了开发流程,Web框架如Spring和Spring Boot支持Web应用开发。ORM工具如JPA、Hibernate处理对象与数
142 3
|
4月前
|
存储 C++ 容器
set容器一自定义数据类型指定排序规则讲解
set容器一自定义数据类型指定排序规则讲解
124 1
|
4月前
|
NoSQL Redis Python
使用Sorted Set制作排行榜
使用Sorted Set制作排行榜
94 0