Redis基本类型之SortedSet类型
文章目录
- Redis基本类型之SortedSet类型
- 一、概述
- 1、简介
- 2、特性
- 二、SortedSet类型的常见命令
- 三、操作案例
- 1、添加学生(zadd)
- 2、删除Tom同学(zrem)
- 3、获取Amy同学的分数(zscore)
- 4、获取Rose同学的value(zrank)
- 5、获取Amy同学的排名(zrevrank)
- 6、获取同学个数(zcard)
- 7、查询80分以下有几个学生(zcount)
- 8、给Amy同学加2分(zincrby)
- 9、查出成绩前3名的同学(zrevrange)
- 10、查出成绩后3名的同学(zrange)
- 11、查出成绩80分以下的所有同学(zrangebyscore)
Redis基本类型之SortedSet类型
一、概述
1、简介
Redis的SortedSet是一个可排序的set集合,与Java中TreeSet有些类似,但底层数据结构却差别很大。SortedSet中的每一个元素都带有一个score属性,可以基于score属性对元素排序,底层的实现是一个跳表(SkipList)加hash表。
2、特性
- 无序
- 可排序
- 元素不重复
- 查询速度快
- 下标索引 0 开始
因为SortedSet的可排序特性,经常被用来实现排行榜这样的功能。
二、SortedSet类型的常见命令
命令 | 作用 |
---|---|
zadd | 添加一个或多个元素到 sorted set,如果已经存在则更新其score值 |
zrem | 删除sorted set中的一个指定元素 |
zscore | 获取sorted set中的指定元素的score值 |
zrank | 获取sorted set中的指定元素的value |
zrevrank | 获取sorted set中的指定元素的排名 |
zcard | 获取sorted set中的元素个数 |
zcount | 统计score值在给定范围内的所有元素的个数 |
zincrby | 让sorted set中的指定元素自增,步长为指定的increment值 |
zrevrange | 按照score排序后,获取指定排名范围内的元素,前几名 |
zrange | 按照score排序后,获取指定排名范围内的元素,后几名 |
zrangebyscore | 按照score排序后,获取指定score范围的元素 |
zdiff、zinter、zunion | 求差集、交集、并集 |
注意:所有的排名默认都是升序,如果要降序则在命令的最后面添加 REV 即可
三、操作案例
1、添加学生(zadd)
- zadd:添加一个或多个元素到 sorted set,如果已经存在则更新其score值
- Jack 85,Lucy 89,Rose 82,Tom 95,Jerry 78,Amy 92,Miles 76
192.168.8.137:6379> ZADD stus 85 Jack 89 Lucy 82 Rose 95 Tom 78 Jerry 92 Amy 76 Miles
(integer) 7
2、删除Tom同学(zrem)
- zrem:删除sorted set中的一个指定元素
192.168.8.137:6379> ZREM stus Tom
(integer) 1
3、获取Amy同学的分数(zscore)
- zscore:获取sorted set中的指定元素的score值
192.168.8.137:6379> ZSCORE stus Amy
"92"
4、获取Rose同学的value(zrank)
- zrank:获取sorted set中的指定元素的value
192.168.8.137:6379> ZRANK stus Rose
(integer) 2
5、获取Amy同学的排名(zrevrank)
- zrevrank:获取sorted set中的指定元素的排名
192.168.8.137:6379> ZREVRANK stus Amy
(integer) 0
6、获取同学个数(zcard)
- zcard:获取sorted set中的元素个数
192.168.8.137:6379> ZCARD stus
(integer) 6
7、查询80分以下有几个学生(zcount)
- zcount:统计score值在给定范围内的所有元素的个数
192.168.8.137:6379> ZCOUNT stus 0 80
(integer) 2
8、给Amy同学加2分(zincrby)
- zincrby:让sorted set中的指定元素自增,步长为指定的increment值
192.168.8.137:6379> ZINCRBY stus 2 Amy
"94"
9、查出成绩前3名的同学(zrevrange)
- zrevrange:按照score排序后,获取指定排名范围内的元素,前几名
192.168.8.137:6379> ZREVRANGE stus 0 2
1) "Amy"
2) "Lucy"
3) "Jack"
10、查出成绩后3名的同学(zrange)
- zrange:按照score排序后,获取指定排名范围内的元素,后几名
192.168.8.137:6379> ZRANGE stus 0 2
1) "Miles"
2) "Jerry"
3) "Rose"
11、查出成绩80分以下的所有同学(zrangebyscore)
- zrangebyscore:按照score排序后,获取指定score范围的元素
192.168.8.137:6379> ZRANGEBYSCORE stus 0 80
1) "Miles"
2) "Jerry"
Redis基本类型之SortedSet类型相关推荐
- Redis 基础 -- 有序集合 SortedSet类型 和 SortedSet类型的常用命令
文章目录 1. 有序集合(SortedSet) 1.1 ZADD:添加或更新成员 1.1.1 更新已有成员的分值 1.1.2 指定要执行的操作 1.1.3 返回被修改成员的数量 1.1.4 时间复杂度 ...
- Redis和nosql简介,api调用;Redis数据功能(String类型的数据处理);List数据结构(及Java调用处理);Hash数据结构;Set数据结构功能;sortedSet(有序集合)数
1.Redis和nosql简介,api调用 14.1/ nosql介绍 NoSQL:一类新出现的数据库(not only sql),它的特点: 1. 不支持SQL语法 2. 存储结构跟传统关系型数 ...
- 【Redis】五种存储类型及其底层数据结构
Redis(Remote Dictionary Service远程字典服务) 参考: 图解redis五种数据结构底层实现(动图哦) Redis(1)--5种基本数据结构 目录 1. Redis的五种存 ...
- redis的五种存储类型的具体用法
一.String 类型操作 string是redis最基本的类型,而且string类型是二进制安全的.意思是redis的string可以包含任何数据.比如jpg图片或者序列化的对象 $redis-&g ...
- Redis中7种集合类型应用场景
象我这样使用了关系型数据库很长时间的码农来说,对一些新的数据类型,比如:集合,链表,的使用场景,感到有种莫名的恐惧.不知有什么用. 在这里,我把几种REDIS数据类型的应用场景 文章转载如下: Red ...
- ***Redis hash是一个string类型的field和value的映射表.它的添加、删除操作都是O(1)(平均)。hash特别适合用于存储对象...
http://redis.readthedocs.org/en/latest/hash/hset.html HSET HSET key field value (存一个对象的时候key存) 将哈希 ...
- 理解 redis 中的 集合对象类型
这篇我们来看看Redis五大类型中的第四大类型:集合类型,集合类型还是蛮有意思的,第一个是因为它算是只使用key的Dictionary简易版,这样说来的话,它就比Dictionary节省很多内存消耗, ...
- Redis总结 其一 概述 安装 类型
为什么要用Redis? 数据库 磁盘IO太慢(原因需了解磁盘,磁道,扇区,操作系统) 内存级别数据库还太贵, 折中就是缓存 关系型数据库和非关系型数据库的区别: 关系型数据库是依据关系模型来创建的数据 ...
- Redis源码-String:Redis String命令、Redis String存储原理、Redis String三种编码类型、Redis字符串SDS源码解析、Redis String应用场景
Redis源码-String:Redis String命令.Redis String存储原理.Redis String三种编码类型.Redis字符串SDS源码解析.Redis String应用场景 R ...
最新文章
- java高并发(十三)并发容器J.U.C--AQS
- Drools学习 入门实例
- 速看|万豪数据泄漏门再敲警钟 酒店集团7步安全建议
- Perl BEGIN块和END块
- python课程设计矩阵对角线之和_在python中如何求矩阵对角线上下元素的和?
- 解决 python中 使用tesserocr,File tesserocr.pyx, line 2401, in tesserocr._tesserocr.image_to_text 报错问题...
- android自定义view背景透明度,Android 背景透明度设置总结
- python入门指南txt-【杂谈】爬虫基础与快速入门指南
- 【vijos1790】拓扑编号
- mpAndroidchart 坐标和图表距离_数据对比图表,如何让你的总结报告更具说服力!...
- 软件实习项目4——校园一卡通管理系统(代码实现)
- 运行计算机名找不到打印机,电脑找不到打印机怎么解决
- easyPOI之动态导出word模板
- win10 锁屏时间无法设置 解决方法
- java解压/读取rar文件
- 通信协议-GMSL(千兆多媒体串行链路)
- python输出无空格,python 2.7.5+打印列表后面没有空格的逗号
- Hadoop源代码分析(完整图文版) part 1
- python获取指定扩展名的文件_python查找目录下指定扩展名的文件实例
- ubuntu18.04 terminal 无法打开