【redis专题(4)】命令语法介绍之sorted_set
有序集合可以模拟优先级队列的实现
增
zadd key score1 value1 score2 value2 ..
redis 127.0.0.1:6379> zadd stu 18 lily 19 hmm 20 lilei 21 lilei
(integer) 3
添加元素
在redis的3.02版本还可以为zadd增加一些附加参数 ZADD key [NX|XX] [CH] [INCR] score member
NX: 不存在的情况下
XX: 存在的情况下(更新)
CH: ??
INCR: 使用该参数使得ZADD的功能类似ZINCRBY的功能
删
zremrangebyscore key min max
redis 127.0.0.1:6379> zremrangebyscore stu 4 10
(integer) 2
redis 127.0.0.1:6379> zrange stu 0 -1
1) "f"
作用: 按照socre来删除元素,删除score在[min,max] (包括)之间的
zrem key value1 value2 ..
作用: 删除集合中的元素
zremrangebyrank key start end
redis 127.0.0.1:6379> zremrangebyrank stu 0 1
(integer) 2
redis 127.0.0.1:6379> zrange stu 0 -1
1) "c"
2) "e"
3) "f"
4) "g"
作用: 按排名删除元素,删除名次在[start,end] (包括)之间的
改
ZINCRBY key increment member
redis> ZADD myzset 1 "one"
(integer) 1
redis> ZADD myzset 2 "two"
(integer) 1
redis> ZINCRBY myzset 2 "one"
"3"
redis> ZRANGE myzset 0 -1 WITHSCORES
1) "two"
2) "2"
3) "one"
4) "3"
redis>
为有序集key的成员member的score值加上增量increment。如果key中不存在member,就在key中添加一个member,score是increment(就好像它之前的score是0.0)。如果key不存在,就创建一个只含有指定member成员的有序集合。
查
zrange key start stop [withscores]
127.0.0.1:6379> zrange yx1 0 3
127.0.0.1:6379> zrange yx1 0 -1 withscores #取出所有以及它的分数
把集合排序后,返回名次[start,stop]的元素
默认是升续排列,降序可以用zrevrange
withscores 是把score也打印出来
zrangebyscore key min max [withscores] limit offset N
zrevrangebyscore key max min [withscores] limit offset N
redis 127.0.0.1:6379> zadd stu 1 a 3 b 4 c 9 e 12 f 15 g
(integer) 6
redis 127.0.0.1:6379> zrangebyscore stu 3 12 limit 1 2 withscores #取3到12,并从1位开始取2位,连同分数一起取出来
1) "c"
2) "4"
3) "e"
4) "9"
127.0.0.1:6379> ZREVRANGEBYSCORE stu 12 3 withscores
1) "f"
2) "12"
3) "e"
4) "9"
5) "c"
6) "4"
7) "b"
8) "3"
作用: 集合(升续|降序)排序后,取score在[min,max]内的元素,并跳过offset个, 取出N个
注意:zrange是按名次来取,zrangebyscore是按score的值来取;
zcard key
返回集合元素个数
zrank key member
查询member的排名(升序0名开始)
zrevrank key memeber
查询 member的排名(降序0名开始)
zcount key min max
返回[min,max] 区间内元素的数量
zrevrange key start stop [withscores]
作用:把集合降序排列,取名次[start,stop]之间的元素
zinterstore destination numkeys key1 [key2 ...] [weights weight [weight ...]] [aggregate sum|min|max]
destination: 运算结果存放的集合名称
numkeys: 参与运算的集合个数
key1,key2...: 参与运算的集合名称
weights: 权重
aggregate: 聚合的方式sum|min|max 默认是sum;
redis 127.0.0.1:6379> zadd z1 2 a 3 b 4 c
(integer) 3
redis 127.0.0.1:6379> zadd z2 2.5 a 1 b 8 d
(integer) 3
# 取z1和z2的交集
redis 127.0.0.1:6379> zinterstore tmp 2 z1 z2
(integer) 2
redis 127.0.0.1:6379> zrange tmp 0 -1
1) "b"
2) "a"
redis 127.0.0.1:6379> zrange tmp 0 -1 withscores
1) "b"
2) "4"
3) "a"
4) "4.5"
# Aggregate sum->score相加,min->最小score的集合, max->最大score集合;
# 可以通过weigth设置不同key的权重, 交集时,socre * weights
redis 127.0.0.1:6379> zinterstore tmp 2 z1 z2 aggregate sum #默认是这个
(integer) 2
redis 127.0.0.1:6379> zrange tmp 0 -1 withscores
1) "b"
2) "4"
3) "a"
4) "4.5"
redis 127.0.0.1:6379> zinterstore tmp 2 z1 z2 aggregate min #两个集合中的交集最小从新生成集合到tmp里面
(integer) 2
redis 127.0.0.1:6379> zrange tmp 0 -1 withscores
1) "b"
2) "1"
3) "a"
4) "2"
redis 127.0.0.1:6379> zinterstore tmp 2 z1 z2 weights 1 2 #权重默认为1,当前的score的真正值就是score*weight 权重,比如z2里面的b未声明权重2前就是3,声明权重2就是6;声明权重后的运算都是按照权重后的值来运算
(integer) 2
redis 127.0.0.1:6379> zrange tmp 0 -1 withscores
1) "b"
2) "5"
3) "a"
4) "7"
更多请参考: http://www.redis.cn/commands.html#sorted_set
【redis专题(4)】命令语法介绍之sorted_set的更多相关文章
- 【redis专题(8)】命令语法介绍之通用KEY
select num 数据库选择 默认有16[0到15]个数据库,默认自动选择0号数据库 move key num 移动key到num服务器 del key [key ...] 删除给定的一个或多个 ...
- 【redis专题(7)】命令语法介绍之Pub/Sub
Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息.主要的目的是解耦消息发布者和消息订阅者之间的耦合,这点和设计模式中的观察者模式比较相似.p ...
- 【redis专题(2)】命令语法介绍之string
REDIS有5大数据结构:string,link,sortedset,sets,hash. 这5个结构我将用5篇文章来记录各自是怎么用的,然后再用一篇文章来说一下各自的应用场景: 更多语法请参考: h ...
- 【redis专题(6)】命令语法介绍之hash
可以把hash看做一个数组hset array key1 value2;,该数据类型特别适用于存储 增 hset key field value 作用: 把key中filed域的值设为value 注: ...
- 【redis专题(5)】命令语法介绍之sets
标签(空格分隔): Redis 关于 redis的无序集合有三个特点: 无序性, 确定性(描述准确) , 唯一性: 有点类似于数据容器: 增 SADD key member1 [member2] 作用 ...
- 【redis专题(3)】命令语法介绍之link
通过链表结构可以模仿队列结构与堆栈结构:关于队列结构和堆栈结构可以查看https://www.zybuluo.com/a5635268/note/290475 增 lpush key value1 v ...
- redis学习笔记01 — 基本介绍、安装配置及常用命令
redis--NoSQL的一种 为了解决高并发.高可用.高扩展.大数据存储等一系列问题而产生的数据库解决方案,就是NoSQL NoSQL,非关系型数据库,全名:Not Only Sql,它不能代替关系 ...
- 四、Redis通配符介绍、命令缩写介绍和后面内容介绍讲解。
1.通配符介绍 ? 匹配一个字符 * 匹配任意个(包括 0 个)字符 [] 匹配括号间任一字符,可以使用 "-" 符号表示一个范围,如 a[b-d]匹配 "ab" ...
- Spring+SpringMVC+MyBatis+easyUI整合进阶篇(九)Linux下安装redis及redis的常用命令和操作
redis简介 Redis是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis与其他key-value缓存产品有以下三个特点: Redis支持数据的持久化,可以将内存 ...
随机推荐
- es 基于match_phrase的模糊匹配原理及使用
[版权声明]:本文章由danvid发布于http://danvid.cnblogs.com/,如需转载或部分使用请注明出处 在业务中经常会遇到类似数据库的"like"的模糊匹配需求 ...
- [每天解决一问题系列 - 0011] 如何清除Windows中的Icon缓存
问题描述: 当更换一个应用或者快捷方式的图标后,会看到图标并没有及时更新 问题原因: 原因是Windows为了使图标显示更快,做了缓存%localappdata%\IconCache.db 解决方案: ...
- webpack-loader是怎样炼成的
目录 啰嗦两句 loader 是干什么的 loader 的工具箱 --context loader 实战 啰嗦两句 学习这件事从学习动机上来看,可以分成两种情况:主动学习和被动学习.主动学习就是,某天 ...
- Python基础之带你快速掌握列表的常用方法
append 前面说过列表是一种 内容可改变的 对象. append方法就会改变列表的内容,在后面添加一个元素 比如 a = [1, 2, 3.14, 'hello'] # append 之后,a就变 ...
- JQ获取CKeditor的值
var editor = CKEDITOR.replace("content"); editor.setData(""); alert(CKEDITOR.ins ...
- php 常用$_SERVER变量列表
$_SERVER['HTTP_ACCEPT_LANGUAGE'] //浏览器语言 $_SERVER['REMOTE_ADDR'] //当前用户 IP . $_SERVER['REMOTE_HOST'] ...
- R语言实战 —— 常见问题解决方法
1.不存在叫XXX这个名字的程序包 > library(reshape) Error in library(reshape) : 不存在叫‘reshape’这个名字的程辑包 解决方法:先安装,后 ...
- SQL语句简单笔记
Create database database name://创建数据库 Show databases dbName: //显示所有数据库 Create table tableName: //创建表 ...
- base64编码的作用【转】
转自:https://www.zhihu.com/question/36306744/answer/71626823 X.509公钥证书也好,电子邮件数据也好,经常要用到Base64编码,那么为什么要 ...
- Ajax提交用FormData()上传文件
1.form声明如下 2.ajax设置如下 var formData = new FormData(document.getElementById("form")); $.ajax ...