有序集合可以模拟优先级队列的实现

  1. zadd key score1 value1 score2 value2 ..
  1. redis 127.0.0.1:6379> zadd stu 18 lily 19 hmm 20 lilei 21 lilei
  2. (integer) 3

添加元素

在redis的3.02版本还可以为zadd增加一些附加参数 ZADD key [NX|XX] [CH] [INCR] score member

NX: 不存在的情况下

XX: 存在的情况下(更新)

CH: ??

INCR: 使用该参数使得ZADD的功能类似ZINCRBY的功能

  1. zremrangebyscore key min max
  1. redis 127.0.0.1:6379> zremrangebyscore stu 4 10
  2. (integer) 2
  3. redis 127.0.0.1:6379> zrange stu 0 -1
  4. 1) "f"

作用: 按照socre来删除元素,删除score在[min,max] (包括)之间的

  1. zrem key value1 value2 ..

作用: 删除集合中的元素

  1. zremrangebyrank key start end
  1. redis 127.0.0.1:6379> zremrangebyrank stu 0 1
  2. (integer) 2
  3. redis 127.0.0.1:6379> zrange stu 0 -1
  4. 1) "c"
  5. 2) "e"
  6. 3) "f"
  7. 4) "g"

作用: 按排名删除元素,删除名次在[start,end] (包括)之间的

  1. ZINCRBY key increment member
  1. redis> ZADD myzset 1 "one"
  2. (integer) 1
  3. redis> ZADD myzset 2 "two"
  4. (integer) 1
  5. redis> ZINCRBY myzset 2 "one"
  6. "3"
  7. redis> ZRANGE myzset 0 -1 WITHSCORES
  8. 1) "two"
  9. 2) "2"
  10. 3) "one"
  11. 4) "3"
  12. redis>

为有序集key的成员member的score值加上增量increment。如果key中不存在member,就在key中添加一个member,score是increment(就好像它之前的score是0.0)。如果key不存在,就创建一个只含有指定member成员的有序集合。

  1. zrange key start stop [withscores]
  1. 127.0.0.1:6379> zrange yx1 0 3
  2. 127.0.0.1:6379> zrange yx1 0 -1 withscores #取出所有以及它的分数

把集合排序后,返回名次[start,stop]的元素

默认是升续排列,降序可以用zrevrange

withscores 是把score也打印出来

  1. zrangebyscore key min max [withscores] limit offset N
  2. zrevrangebyscore key max min [withscores] limit offset N
  1. redis 127.0.0.1:6379> zadd stu 1 a 3 b 4 c 9 e 12 f 15 g
  2. (integer) 6
  3. redis 127.0.0.1:6379> zrangebyscore stu 3 12 limit 1 2 withscores #取3到12,并从1位开始取2位,连同分数一起取出来
  4. 1) "c"
  5. 2) "4"
  6. 3) "e"
  7. 4) "9"
  8. 127.0.0.1:6379> ZREVRANGEBYSCORE stu 12 3 withscores
  9. 1) "f"
  10. 2) "12"
  11. 3) "e"
  12. 4) "9"
  13. 5) "c"
  14. 6) "4"
  15. 7) "b"
  16. 8) "3"

作用: 集合(升续|降序)排序后,取score在[min,max]内的元素,并跳过offset个, 取出N个

注意:zrange是按名次来取,zrangebyscore是按score的值来取;

  1. zcard key

返回集合元素个数

  1. zrank key member

查询member的排名(升序0名开始)

  1. zrevrank key memeber

查询 member的排名(降序0名开始)

  1. zcount key min max

返回[min,max] 区间内元素的数量

  1. zrevrange key start stop [withscores]

作用:把集合降序排列,取名次[start,stop]之间的元素

  1. zinterstore destination numkeys key1 [key2 ...] [weights weight [weight ...]] [aggregate sum|min|max]

destination: 运算结果存放的集合名称

numkeys: 参与运算的集合个数

key1,key2...: 参与运算的集合名称

weights: 权重

aggregate: 聚合的方式sum|min|max 默认是sum;

  1. redis 127.0.0.1:6379> zadd z1 2 a 3 b 4 c
  2. (integer) 3
  3. redis 127.0.0.1:6379> zadd z2 2.5 a 1 b 8 d
  4. (integer) 3
  5. # 取z1和z2的交集
  6. redis 127.0.0.1:6379> zinterstore tmp 2 z1 z2
  7. (integer) 2
  8. redis 127.0.0.1:6379> zrange tmp 0 -1
  9. 1) "b"
  10. 2) "a"
  11. redis 127.0.0.1:6379> zrange tmp 0 -1 withscores
  12. 1) "b"
  13. 2) "4"
  14. 3) "a"
  15. 4) "4.5"
  16. # Aggregate sum->score相加,min->最小score的集合, max->最大score集合;
  17. # 可以通过weigth设置不同key的权重, 交集时,socre * weights
  18. redis 127.0.0.1:6379> zinterstore tmp 2 z1 z2 aggregate sum #默认是这个
  19. (integer) 2
  20. redis 127.0.0.1:6379> zrange tmp 0 -1 withscores
  21. 1) "b"
  22. 2) "4"
  23. 3) "a"
  24. 4) "4.5"
  25. redis 127.0.0.1:6379> zinterstore tmp 2 z1 z2 aggregate min #两个集合中的交集最小从新生成集合到tmp里面
  26. (integer) 2
  27. redis 127.0.0.1:6379> zrange tmp 0 -1 withscores
  28. 1) "b"
  29. 2) "1"
  30. 3) "a"
  31. 4) "2"
  32. redis 127.0.0.1:6379> zinterstore tmp 2 z1 z2 weights 1 2 #权重默认为1,当前的score的真正值就是score*weight 权重,比如z2里面的b未声明权重2前就是3,声明权重2就是6;声明权重后的运算都是按照权重后的值来运算
  33. (integer) 2
  34. redis 127.0.0.1:6379> zrange tmp 0 -1 withscores
  35. 1) "b"
  36. 2) "5"
  37. 3) "a"
  38. 4) "7"

更多请参考: http://www.redis.cn/commands.html#sorted_set

【redis专题(4)】命令语法介绍之sorted_set的更多相关文章

  1. 【redis专题(8)】命令语法介绍之通用KEY

    select num 数据库选择 默认有16[0到15]个数据库,默认自动选择0号数据库 move key num 移动key到num服务器 del key [key ...] 删除给定的一个或多个 ...

  2. 【redis专题(7)】命令语法介绍之Pub/Sub

    Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息.主要的目的是解耦消息发布者和消息订阅者之间的耦合,这点和设计模式中的观察者模式比较相似.p ...

  3. 【redis专题(2)】命令语法介绍之string

    REDIS有5大数据结构:string,link,sortedset,sets,hash. 这5个结构我将用5篇文章来记录各自是怎么用的,然后再用一篇文章来说一下各自的应用场景: 更多语法请参考: h ...

  4. 【redis专题(6)】命令语法介绍之hash

    可以把hash看做一个数组hset array key1 value2;,该数据类型特别适用于存储 增 hset key field value 作用: 把key中filed域的值设为value 注: ...

  5. 【redis专题(5)】命令语法介绍之sets

    标签(空格分隔): Redis 关于 redis的无序集合有三个特点: 无序性, 确定性(描述准确) , 唯一性: 有点类似于数据容器: 增 SADD key member1 [member2] 作用 ...

  6. 【redis专题(3)】命令语法介绍之link

    通过链表结构可以模仿队列结构与堆栈结构:关于队列结构和堆栈结构可以查看https://www.zybuluo.com/a5635268/note/290475 增 lpush key value1 v ...

  7. redis学习笔记01 — 基本介绍、安装配置及常用命令

    redis--NoSQL的一种 为了解决高并发.高可用.高扩展.大数据存储等一系列问题而产生的数据库解决方案,就是NoSQL NoSQL,非关系型数据库,全名:Not Only Sql,它不能代替关系 ...

  8. 四、Redis通配符介绍、命令缩写介绍和后面内容介绍讲解。

    1.通配符介绍 ? 匹配一个字符 * 匹配任意个(包括 0 个)字符 [] 匹配括号间任一字符,可以使用 "-" 符号表示一个范围,如 a[b-d]匹配 "ab" ...

  9. Spring+SpringMVC+MyBatis+easyUI整合进阶篇(九)Linux下安装redis及redis的常用命令和操作

    redis简介 Redis是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis与其他key-value缓存产品有以下三个特点: Redis支持数据的持久化,可以将内存 ...

随机推荐

  1. VSCode配置Git随记

    VSCode配置Git随记 2018年05月29日 10:14:24 Dominic- 阅读数:4096   vscode中对git进行了集成,很多操作只需点击就能操作,无需写一些git指令. 不过这 ...

  2. C# 串口类SerialPort的使用方法

    序言:最近做了一个智能体育项目——跆拳道积分系统,硬件部分会向软件传入振动值等数据,链接方式为串口,所以用到SerialPort类. 值得注意的是: DataReceived 方法,当串口缓冲区有数据 ...

  3. 【DB2】Event monitor for locking

    Customer said, they got the following Errors in applications logs Caused by: financing.tools.hub.sha ...

  4. MD5加密之提取文件的MD5特征码

    public static String encodeFile(String path) { try { MessageDigest digester = MessageDigest.getInsta ...

  5. Android并发编程 原子类与并发容器

    在Android开发的漫漫长途上的一点感想和记录,如果能给各位看官带来一丝启发或者帮助,那真是极好的. 前言 上一篇博文中,主要说了些线程以及锁的东西,我们大多数的并发开发需求,基本上可以用synch ...

  6. [java初探10]__关于数字处理类

    前言 在我们的日常开发过程中,我们会经常性的使用到数字类型的数据,同时,也会有众多的对数字处理的需求,针对这个方面的问题,在JAVA语言中.提供解决方法的类就是数字处理类 java中的数字处理类包括: ...

  7. 谈谈对JVM的理解

            JVM可谓是学习JAVA基础中的基础了,但仍有不少同学对JVM概念还是比较模糊,甚至没有听说过,对java的理解也只是在基础语法 层面,本文就将对JVM进行初步介绍,因篇幅所限,只能介 ...

  8. 年终培训关于磁盘冗余阵列、热备、群集、负载均衡、云计算、F5、Nginx等的概念和基本原理

    在系统部署实施过程中,客户往往会关注系统的可用性方面的指标. 对于一个具备高可用性的系统来说, 多机部署方案是必不可少的. 我们这个知识分享,就从多个不同层面来介绍多机部署方案. ---------- ...

  9. 所生成项目的处理器架构“MSIL”与引用“Microsoft.AspNet.Scaffolding.12.0, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=x86”的处理器架构“x86”不匹配。

    生成成功后: 3>C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1820,5): ...

  10. T-SQL:Varchar和Nvarchar区别(八)

    常规数据类型:CHAR 和 VARCHAR   Unicode 数据类型 NCHAR NVARCHAR 常规数据类型 会限制除英语之外语言    Unicode 会支持多种语言 VAR 区别 : 1. ...