文章目录

  • 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类型相关推荐

  1. Redis 基础 -- 有序集合 SortedSet类型 和 SortedSet类型的常用命令

    文章目录 1. 有序集合(SortedSet) 1.1 ZADD:添加或更新成员 1.1.1 更新已有成员的分值 1.1.2 指定要执行的操作 1.1.3 返回被修改成员的数量 1.1.4 时间复杂度 ...

  2. Redis和nosql简介,api调用;Redis数据功能(String类型的数据处理);List数据结构(及Java调用处理);Hash数据结构;Set数据结构功能;sortedSet(有序集合)数

    1.Redis和nosql简介,api调用 14.1/ nosql介绍 NoSQL:一类新出现的数据库(not only sql),它的特点: 1.  不支持SQL语法 2.  存储结构跟传统关系型数 ...

  3. 【Redis】五种存储类型及其底层数据结构

    Redis(Remote Dictionary Service远程字典服务) 参考: 图解redis五种数据结构底层实现(动图哦) Redis(1)--5种基本数据结构 目录 1. Redis的五种存 ...

  4. redis的五种存储类型的具体用法

    一.String 类型操作 string是redis最基本的类型,而且string类型是二进制安全的.意思是redis的string可以包含任何数据.比如jpg图片或者序列化的对象 $redis-&g ...

  5. Redis中7种集合类型应用场景

    象我这样使用了关系型数据库很长时间的码农来说,对一些新的数据类型,比如:集合,链表,的使用场景,感到有种莫名的恐惧.不知有什么用. 在这里,我把几种REDIS数据类型的应用场景 文章转载如下: Red ...

  6. ***Redis hash是一个string类型的field和value的映射表.它的添加、删除操作都是O(1)(平均)。hash特别适合用于存储对象...

    http://redis.readthedocs.org/en/latest/hash/hset.html HSET HSET key field value   (存一个对象的时候key存) 将哈希 ...

  7. 理解 redis 中的 集合对象类型

    这篇我们来看看Redis五大类型中的第四大类型:集合类型,集合类型还是蛮有意思的,第一个是因为它算是只使用key的Dictionary简易版,这样说来的话,它就比Dictionary节省很多内存消耗, ...

  8. Redis总结 其一 概述 安装 类型

    为什么要用Redis? 数据库 磁盘IO太慢(原因需了解磁盘,磁道,扇区,操作系统) 内存级别数据库还太贵, 折中就是缓存 关系型数据库和非关系型数据库的区别: 关系型数据库是依据关系模型来创建的数据 ...

  9. 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 ...

最新文章

  1. java高并发(十三)并发容器J.U.C--AQS
  2. Drools学习 入门实例
  3. 速看|万豪数据泄漏门再敲警钟 酒店集团7步安全建议
  4. Perl BEGIN块和END块
  5. python课程设计矩阵对角线之和_在python中如何求矩阵对角线上下元素的和?
  6. 解决 python中 使用tesserocr,File tesserocr.pyx, line 2401, in tesserocr._tesserocr.image_to_text 报错问题...
  7. android自定义view背景透明度,Android 背景透明度设置总结
  8. python入门指南txt-【杂谈】爬虫基础与快速入门指南
  9. 【vijos1790】拓扑编号
  10. mpAndroidchart 坐标和图表距离_数据对比图表,如何让你的总结报告更具说服力!...
  11. 软件实习项目4——校园一卡通管理系统(代码实现)
  12. 运行计算机名找不到打印机,电脑找不到打印机怎么解决
  13. easyPOI之动态导出word模板
  14. win10 锁屏时间无法设置 解决方法
  15. java解压/读取rar文件
  16. 通信协议-GMSL(千兆多媒体串行链路)
  17. python输出无空格,python 2.7.5+打印列表后面没有空格的逗号
  18. Hadoop源代码分析(完整图文版) part 1
  19. python获取指定扩展名的文件_python查找目录下指定扩展名的文件实例
  20. ubuntu18.04 terminal 无法打开

热门文章

  1. 以此记:2020-08-13
  2. 如何清除电脑上未完成的打印任务
  3. 2021-05-08 考试
  4. 未能实例化2个ActiveX控件,请重新安装或注册这些控件并重试
  5. 开源ERP和其它ERP软件比较
  6. GPS卫星授时服务器(GPS北斗授时钟系统)实施部署方案
  7. 微信小程序欢迎页面效果实现
  8. 程序异常是python语言基本控制结构_python-控制结构
  9. 用一句话概括计算机信息管理,一句话概括ERP
  10. 06-Java基础-面向对象概述