一分钟带你了解Redis数据类型-ZSet
SortedSet又叫zset,它是Redis提供的特殊数据类型,是一种特殊的set类型,继承了set不可重复的特点,并在set基础上为每个值添加一个分数,用来实现值的有序排列。
常用指令
明白它的特点后,接下来,伟哥操作一下此数据类型的常用的相关指令。
zadd
将一个或者多个元素及其对应的分数添加到集合中。用命令来演示下面的例子:
#新增
192.168.65.15:6379> zadd db 10 oracle 5 mysql 25 redis 7 mongodb
#返回新增的个数
(integer) 4
zcard
返回元素的个数,如果key不存在,则返回0。
192.168.65.15:6379> zcard db
(integer) 4
zcount
返回 分数在 区间之间的个数。
#返回分数score 在 1-3之间的元素个数
192.168.65.15:6379> zcount db 10 20
(integer) 1
zrange
返回指定下标范围内正序排列的值,start 下标从0开始,查询所有范围是0到-1。
#查询所有元素范围用 0 -1
192.168.65.15:6379> zrange db 0 -1
"mysql"
"mongodb"
"oracle"
"redis"
#查询所有元素带分数
192.168.65.15:6379> zrange db 0 -1 withscores
"mysql"
"5"
"mongodb"
"7"
"oracle"
"10"
"redis"
"25"
#查询指定下标范围内的元素
192.168.65.15:6379> zrange db 2 3
"oracle"
"redis"
#查询指定下标范围内的元素,带分数
192.168.65.15:6379> zrange db 2 3 withscores
"oracle"
"10"
"redis"
"25"
zrevrange
返回指定下标范围倒序的值,start 下标从0开始,查询所有范围是0到-1。
#查询所有
192.168.65.15:6379> zrevrange db 0 -1
"redis"
"oracle"
"mongodb"
"mysql"
#查询所有元素,带分数
192.168.65.15:6379> zrevrange db 0 -1 withscores
"redis"
"25"
"oracle"
"10"
"mongodb"
"7"
"mysql"
"5"
#查询指定下标范围内的元素值
192.168.65.15:6379> zrevrange db 2 3
"mongodb"
"mysql"
zrangebyscore
返回指定分数区间元素的信息,可以返回分数,可以进行分页 limit offset count,offset指的是元素的下标从0开始,count指返回的元素个数,按正序返回。
#正序返回分数在0到30之间的元素信息
192.168.65.15:6379> zrangebyscore db 0 30 withscores
"mysql"
"5"
"mongodb"
"7"
"oracle"
"10"
"redis"
"25"
#正序返回分数在0到30之间的元素信息,并分页,如果是0 -1 表示所有
192.168.65.15:6379> zrangebyscore db 0 30 withscores limit 0 -1
"mysql"
"5"
"mongodb"
"7"
"oracle"
"10"
"redis"
"25"
#正序返回分数在0到30之间的元素信息,并分页,下标从0开始,元素个数是1
192.168.65.15:6379> zrangebyscore db 0 30 withscores limit 0 1
"mysql"
"5"
#正序返回分数在0到30之间的元素信息,并分页,下标从2开始,元素个数是2
192.168.65.15:6379> zrangebyscore db 0 30 withscores limit 2 2
"oracle"
"10"
"redis"
"25"
zrevrangebyscore
与zrangebyscore相比,不同是倒序 。
#返回倒序分数30-0的所有元素
192.168.65.15:6379> zrevrangebyscore db 30 0 withscores limit 0 -1
"redis"
"25"
"oracle"
"10"
"mongodb"
"7"
"mysql"
"5"
#返回倒序分数30-0,进行分页,下标从2开始,取2条
192.168.65.15:6379> zrevrangebyscore db 30 0 withscores limit 2 2
"mongodb"
"7"
"mysql"
"5"
zrank zrevrank
zrank可以返回元素的正序名次,名次从0开始,第1名返回0。zrevrank可以返回元素的倒序名次,名次也是从0开始,第1名返回0。
#查看正序排名
192.168.65.15:6379> zrange db 0 -1
"mysql"
"mongodb"
"oracle"
"redis"
#redis排名下标为3,那就是第4名
192.168.65.15:6379> db redis
(integer) 3
#redis排名倒序下标为0,那就是第1名
192.168.65.15:6379> zrevrank db redis
(integer) 0
zincrby zscore
zincrby增加指定元素的分数,zscore查询指定元素的分数
#查询一波数据
192.168.65.15:6379> zrange db 0 -1 withscores
"mysql"
"5"
"mongodb"
"7"
"oracle"
"10"
"redis"
"25"
#元素mysql的分数+3
192.168.65.15:6379> zincrby db 3 mysql
"8"
#重新查看排名
192.168.65.15:6379> zrange db 0 -1 withscores
"mongodb"
"7"
"mysql"
"8"
"oracle"
"10"
"redis"
"25"
#单独查询mysql的分数
192.168.65.15:6379> zscore db mysql
"8"
zrem
返回删除成功元素个数。
#删除mysql元素
192.168.65.15:6379> zrem db mysql
(integer) 1
#查询一下
192.168.65.15:6379> zrange db 0 -1
"mongodb"
"oracle"
"redis"
zremrangebyrank zremrangebyscore
zremrangebyrank按排名次删除,start从0开始。
zremrangebyscore按分数区间删除。
#删除0下标的元素
192.168.65.15:6379> zremrangebyrank db 0 0
(integer) 1
#查询,已删除
192.168.65.15:6379> zrange db 0 -1 withscores
"oracle"
"10"
"redis"
"25"
#按分数区间删除
192.168.65.15:6379> zremrangebyscore db 10 20
(integer) 1
#查询,已删除
192.168.65.15:6379> zrange db 0 -1 withscores
"redis"
"25"
四. 应用场景
只要涉及到排名、投票等场景都可以用zset。
猜你喜欢LIKE
相关推荐HOT
更多>>servlet底层原理是什么?
1、ServletAPI核心类与接口2、Servlet类处理请求的流程创建servlet类的步骤:创建一个命名为TestServlet继承javax.servlet.http.HttpServlet类详情>>
2023-05-30 10:41:22多线程的优势与劣势分别是什么?
多线程是指在同一个程序中,同时运行多个线程,每个线程都可以独立执行不同的任务,相互之间不会干扰。多线程的优势和劣势如下:优势:提高程序...详情>>
2023-05-30 10:32:12设计模式之生产者与消费者的代码实现
本文主要讲述生产者和消费者模式,文中会使用通俗易懂的案例,使你更好地学习本章知识点并理解原理,做到有道无术。什么是生产者和消费者模式生...详情>>
2023-05-30 10:25:46从零开始学Java之interface接口
一.接口简介简介Java中的接口(interface)类似于是一种特殊的抽象类,它也是众多抽象方法的集合。接口的定义方式、组成部分都与抽象类相似,却比...详情>>
2023-05-29 11:26:17热门推荐
如何进行mysql数据备份?
沸什么是servlet的生命周期?servlet请求处理流程是怎样的?
热servlet底层原理是什么?
热怎样编写java程序?
新多线程的优势与劣势分别是什么?
ssm框架的作用与原理是什么?
设计模式之生产者与消费者的代码实现
接口和抽象类有什么区别?4个方面对比
从零开始学Java之interface接口
从零开始学Java之Java中的内部类是怎么回事?
一分钟带你了解MySQL——基础与介绍
在java中,super关键字怎样使用
什么是事件流以及事件流的传播机制 ?
弹性盒有哪些属性是在父元素身上?