千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:重庆千锋IT培训  >  技术干货  >  一分钟带你了解Redis数据类型-ZSet

一分钟带你了解Redis数据类型-ZSet

来源:千锋教育
发布人:lxl
时间: 2023-05-11 11:25:47

  SortedSet又叫zset,它是Redis提供的特殊数据类型,是一种特殊的set类型,继承了set不可重复的特点,并在set基础上为每个值添加一个分数,用来实现值的有序排列。

图片1

  常用指令

  明白它的特点后,接下来,伟哥操作一下此数据类型的常用的相关指令。

  zadd

图片2

  将一个或者多个元素及其对应的分数添加到集合中。用命令来演示下面的例子:

图片3

  #新增

  192.168.65.15:6379> zadd db 10 oracle 5 mysql 25 redis 7 mongodb

  #返回新增的个数

  (integer) 4

  zcard

  返回元素的个数,如果key不存在,则返回0。

图片4

  192.168.65.15:6379> zcard db

  (integer) 4

  zcount

  返回 分数在 区间之间的个数。

图片5

  #返回分数score 在 1-3之间的元素个数

  192.168.65.15:6379> zcount db 10 20

  (integer) 1

  zrange

  返回指定下标范围内正序排列的值,start 下标从0开始,查询所有范围是0到-1。

图片6

  #查询所有元素范围用 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。

图片7

  #查询所有

  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指返回的元素个数,按正序返回。

图片8

  #正序返回分数在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相比,不同是倒序 。

图片9

  #返回倒序分数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。

图片10

  #查看正序排名

  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查询指定元素的分数

图片11

  #查询一波数据

  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按分数区间删除。

图片12

  #删除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。

图片13

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

如何进行mysql数据备份?

2023-05-30

从零开始学Java之Java中的内部类是怎么回事?

2023-05-29

什么是事件流以及事件流的传播机制 ?

2023-05-29

最新文章NEW

什么是servlet的生命周期?servlet请求处理流程是怎样的?

2023-05-30

在java中,super关键字怎样使用

2023-05-29

什么是JavaScript伪数组?

2023-05-25

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>