Redis系列-存储篇sorted set主要操作函数小结
redis支持有序集合,即sorted set。sorted set在set的基础上,增加了排序属性,是set的升级版。这里简要谈谈sorted set的常用函数:
1)insert
a) zadd
语法:zadd key score member [[score member] [score member] ...]
解释:增加一个或多个member【根据score排序】到有序集key中,如果member已经存在,只更新score。返回增加member个数,不包含已经存在的member
- [root@xsf001 ~]# redis-cli
- redis 127.0.0.1:6379> ZADD score 230 zhangsan
- (integer) 1
- redis 127.0.0.1:6379> zadd score 240 lisi 250 wangwu
- (integer) 2
- redis 127.0.0.1:6379> zadd score 100 liuli
- redis 127.0.0.1:6379> zadd score 249 wangwu
- (integer) 0
注意:有些redis版本,只能一次添加一个member
2)select
a)zrange
语法:zrange key start stop [withscores]
解释:返回有续集key中指定范围【通过索引 start stop】的member[及其score];
- redis 127.0.0.1:6379> zrange score 0 -1 #所有元素
- 1) "liuli"
- 2) "zhangsan"
- 3) "lisi"
- 4) "wangwu"
- redis 127.0.0.1:6379> zrange score 0 -1 withscores #所有member及score
- 1) "liuli"
- 2) "100"
- 3) "zhangsan"
- 4) "230"
- 5) "lisi"
- 6) "240"
- 7) "wangwu"
- 8) "249"
- redis 127.0.0.1:6379> zrange score 0 2 withscores #前三个元素
- 1) "liuli"
- 2) "100"
- 3) "zhangsan"
- 4) "230"
- 5) "lisi"
- 6) "240"
- redis 127.0.0.1:6379> zrange score 0 -2 #第一个元素到
- 1) "liuli"
- 2) "zhangsan"
- 3) "lisi"
注意:0,表示第一个元素,-1 表示最后一个元素,-2 表示倒数第二个元素
b)zcount
语法:zcount key min max
解释:统计key中score值介于min 和max之间的member个数
- redis 127.0.0.1:6379> zrange score 0 -1 withscores
- 1) "liuli"
- 2) "100"
- 3) "zhangsan"
- 4) "230"
- 5) "lisi"
- 6) "240"
- 7) "wangwu"
- 8) "249"
- redis 127.0.0.1:6379> zcount score 230 240 # count(score >=230 && score <=240)
- (integer) 2
c) zscore
语法:zscore key member
解释:返回有续集key中member的score
- redis 127.0.0.1:6379> zscore score liuli
- "100"
d)zrevrange
语法:zrevrange key start stop [withscores]
解释:返回有续集key中指定范围[通过索引start stop]的member[及score],返回member根据score按降序排列
- redis 127.0.0.1:6379> zrevrange score 0 -1 withscores
- 1) "wangwu"
- 2) "249"
- 3) "lisi"
- 4) "240"
- 5) "zhangsan"
- 6) "230"
- 7) "liuli"
- 8) "100"
- redis 127.0.0.1:6379> zrevrange score 1 -2
- 1) "lisi"
- 2) "zhangsan"
注意:索引0 表示第一个元素,-1 最后一个元素,-2 倒数第二个元素;依次类推
e)zrangebyscore
语法:zrangebyscore key min max [withscores] [limit offset count]
解释:返回有续集key中,score大于等于min并且小于等于max的member。返回结果按照score递增的次序排列。可选withscores决定返回结果集中仅仅返回member还是返回member和score;可选参数limit 指定返回结果的数量区间。
- redis 127.0.0.1:6379> zrangebyscore score 100 10000 withscores
- 1) "liuli"
- 2) "100"
- 3) "zhangsan"
- 4) "230"
- 5) "lisi"
- 6) "240"
- 7) "wangwu"
- 8) "249"
- redis 127.0.0.1:6379> zrangebyscore score 100 10000 limit 1 3
- 1) "zhangsan"
- 2) "lisi"
- 3) "wangwu"
f)zrevrangebyscore
语法:zrevrangescore key max min [withscores] [limit offset count]
解释:返回有续集key中score<=max并且score>=min 的元素,返回结果根据score从大到小顺序排列。可选参数withscores决定结果集中是否包含score,可选参数limit 指定返回结果集范围。
- redis 127.0.0.1:6379> zrevrangebyscore score 0 10000
- (empty list or set)
- redis 127.0.0.1:6379> zrevrangebyscore score 10000 0
- 1) "wangwu"
- 2) "lisi"
- 3) "zhangsan"
- 4) "liuli"
- redis 127.0.0.1:6379> zrevrangebyscore score 10000 0 withscores limit 0, 2
- 1) "wangwu"
- 2) "249"
- 3) "lisi"
- 4) "240"
注意:max在min之前
g)zrank
语法:zrank key member
解释:根据score从低到高,返回member在有续集中的index
- redis 127.0.0.1:6379> zrange score 0 -1
- 1) "liuli"
- 2) "zhangsan"
- 3) "lisi"
- 4) "wangwu"
- redis 127.0.0.1:6379> zrank score liuli
- (integer) 0
- redis 127.0.0.1:6379> zrank score wangwu
- (integer) 3
h)zrevrank
语法:zrevrank key member
解释:根据score从高到低排序,返回member在有序集key中的index
- redis 127.0.0.1:6379> zrange score 0 -1
- 1) "liuli"
- 2) "zhangsan"
- 3) "lisi"
- 4) "wangwu"
- redis 127.0.0.1:6379> zrevrank score liuli
- (integer) 3
- redis 127.0.0.1:6379> zrevrank score wangwu
- (integer) 0
i)zcard
语法:zcard key
解释:返回有续集key的基数
- redis 127.0.0.1:6379> zcard score
- (integer) 4
- redis 127.0.0.1:6379> zcard stdu #有续集不存在返回0
- (integer) 0
3)update
a)zincrby
语法:zincrby key increment member
解释:有续集key的member增加增量increment,返回增加后的score
- redis 127.0.0.1:6379> zscore score liuli
- "100"
- redis 127.0.0.1:6379> zincrby score 300 liuli
- "400"
- redis 127.0.0.1:6379> zscore score liuli
- "400"
- redis 127.0.0.1:6379> <span style="font-family: Arial, Helvetica, sans-serif;">zincrby </span>score 500 xie
- "500"
注意:如果member在key中不存在,则新增个member
4)delete
a)zrem
语法:zrem key member [member ...]
解释:移除有续集中的一个或多个member,返回移除member的个数
- redis 127.0.0.1:6379> zrange score 0 -1
- 1) "zhangsan"
- 2) "lisi"
- 3) "wangwu"
- 4) "liuli"
- 5) "xie"
- redis 127.0.0.1:6379> zrem score xie wwww #www不存在
- (integer) 1
- redis 127.0.0.1:6379> zrange score 0 -1
- 1) "zhangsan"
- 2) "lisi"
- 3) "wangwu"
- 4) "liuli"
注意:如果member不存在,则忽略
b)zremrangebyrank
语法:zremrangebyrank key start stop
解释:移除有续集中指定排名范围【start stop】的元素,返回移除元素个数
- redis 127.0.0.1:6379> zrange score 0 -1
- 1) "zhangsan"
- 2) "lisi"
- 3) "wangwu"
- 4) "liuli"
- redis 127.0.0.1:6379> zremrangebyrank score 0 1
- (integer) 2
- redis 127.0.0.1:6379> zrange score 0 -1
- 1) "wangwu"
- 2) "liuli"
注意:如果stop在start之前,则移除0个
c)zremrangebyscore
语法:zremrangebyscore key min max
解释:移除有续集中的member,移除member的score大于等于min小于等于max;返回移除元素个数
- redis 127.0.0.1:6379> zrange score 0 -1 withscores
- 1) "wangwu"
- 2) "249"
- 3) "liuli"
- 4) "400"
- redis 127.0.0.1:6379> zremrangebyscore score 248 250
- (integer) 1
- redis 127.0.0.1:6379> zrange score 0 -1 withscores
- 1) "liuli"
- 2) "400"
5)其他
a)zinterstore
语法:zinterstore destination numkeys key[key...] [weights weight] [aggregate sum|min|max]
解释:统计多个有续集的交集,其中有续集key的个数必须以numkeys参数指定,并将统计结果存储到destination。默认情况下,destination中元素的score是各个有续集key中元素的score之和。使用weights为每个有续集指定个乘法因子,每个有续集的score在传递给集合函数(aggregate)之前,先乘以乘法因子。如果没指定乘法因子weight,默认是1;使用aggregate选项指定交集的聚合方式。min,最小score,max,最大score,sum,求和。
- redis 127.0.0.1:6379> zrange score 0 -1 withscores
- 1) "lisi"
- 2) "20"
- 3) "liuli"
- 4) "400"
- redis 127.0.0.1:6379> zrange score1 0 -1 withscores
- 1) "wangwu"
- 2) "20"
- 3) "liuli"
- 4) "30"
- redis 127.0.0.1:6379> zinterstore dest 2 score score1 #交集求和 sum(score.member.score * 1 + score1.member.score * 1)
- (integer) 1
- redis 127.0.0.1:6379> zrange dest 0 -1 withscores
- 1) "liuli"
- 2) "430"
- redis 127.0.0.1:6379> zinterstore dest 2 score score1 weights 1 2 #交集求和,sum(score.member.score * 1 + score1.member.score * 2)
- (integer) 1
- redis 127.0.0.1:6379> zrange dest 0 -1 withscores
- 1) "liuli"
- 2) "460"
- redis 127.0.0.1:6379> zinterstore dest 2 score score1 aggregate min #交集求最小值,min(score.member.score * 1 , score1.member.score * 1)
- (integer) 1
- redis 127.0.0.1:6379> zrange dest 0 -1 withscores
- 1) "liuli"
- 2) "30"
- redis 127.0.0.1:6379> zinterstore dest 2 score score1 aggregate max #交集求最大值 max(score.member.score * 1 , score1.member.score * 1)
- (integer) 1
- redis 127.0.0.1:6379> zrange dest 0 -1 withscores
- 1) "liuli"
- 2) "400"
- redis 127.0.0.1:6379> zinterstore dest 2 score score1 aggregate sum #交集求和,sum(score.member.score * 1 , score1.member.score * 1)
- (integer) 1
- redis 127.0.0.1:6379> zrange dest 0 -1 withscores
- 1) "liuli"
- 2) "430"
- redis 127.0.0.1:6379> zinterstore dest 2 score score1 weights 1 2 aggregate min #交集求最小值 min(score.member.score * 1 , score1.member.score * 2)
- (integer) 1
- redis 127.0.0.1:6379> zrange dest 0 -1 withscores
- 1) "liuli"
- 2) "60"
b)zunionstore
语法:zunionstore destination numkeys key[key...] [weights weight] [aggregate sum|min|max]
解释:统计多个有续集的并集,其中有续集key的个数必须以numkeys参数指定,并将统计结果存储到destination。。默认情况下,destination中元素的score是各个有续集key中元素的score之和。weights指定乘法因子,aggregate指定聚合方式,详情,请参阅 zinterstore 中介绍
- redis 127.0.0.1:6379> zrange score 0 -1 withscores
- 1) "lisi"
- 2) "20"
- 3) "liuli"
- 4) "400"
- redis 127.0.0.1:6379> zrange score1 0 -1 withscores
- 1) "wangwu"
- 2) "20"
- 3) "liuli"
- 4) "30"
- redis 127.0.0.1:6379> zunionstore dest 2 score score1 #交集求和 sum(score.member.score * 1 , score1.member.score * 1)
- (integer) 3
- redis 127.0.0.1:6379> zrange dest 0 -1 withscores
- 1) "lisi"
- 2) "20"
- 3) "wangwu"
- 4) "20"
- 5) "liuli"
- 6) "430"
- redis 127.0.0.1:6379> zunionstore dest 2 score score1 weights 1 2 aggregate sum #交集求和 sum(score.member.score * 1 , score1.member.score * 2)
- (integer) 3
- redis 127.0.0.1:6379> zrange dest 0 -1 withscores
- 1) "lisi"
- 2) "20"
- 3) "wangwu"
- 4) "40"
- 5) "liuli"
- 6) "460"
- redis 127.0.0.1:6379> zunionstore dest 2 score score1 weights 1 2 aggregate max #交集最大值 max(score.member.score * 1 , score1.member.score * 2)
- (integer) 3
- redis 127.0.0.1:6379> zrange dest 0 -1 withscores
- 1) "lisi"
- 2) "20"
- 3) "wangwu"
- 4) "40"
- 5) "liuli"
- 6) "400"
- redis 127.0.0.1:6379> zunionstore dest 2 score score1 weights 2 4 aggregate min #交集最小值 min(score.member.score * 2 , score1.member.score * 4)
- (integer) 3
- redis 127.0.0.1:6379> zrange dest 0 -1 withscores
- 1) "lisi"
- 2) "40"
- 3) "wangwu"
- 4) "80"
- 5) "liuli"
- 6) "120"
提醒:sorted set的所有函数,请用下面方式查看
- [root@xsf001 ~]# redis-cli
- redis 127.0.0.1:6379> help @sorted_set
Redis系列-存储篇sorted set主要操作函数小结的更多相关文章
- Redis系列-存储篇sorted set主要操作命令
		Redis系列-存储篇sorted set主要操作函数小结 redis支持有序集合,即sorted set.sorted set在set的基础上,增加了排序属性,是set的升级版.这里简要谈谈sort ... 
- Redis系列-存储篇string主要操作命令
		Redis系列-存储篇string主要操作命令 通过上两篇的介绍,我们的redis服务器基本跑起来.db都具有最基本的CRUD功能,我们沿着这个脉络,开始学习redis丰富的数据结构之旅,当然先从最简 ... 
- Redis系列-存储篇list主要操作命令
		Redis系列-存储篇list主要操作命令小结 在总结list之前,先要弄明白几个跟list相关的概念: 列表:一个从左到右的队列,个人理解更类似于一个栈,常规模式下,先进列表的元素,后出. 表头元素 ... 
- Redis系列-存储篇string主要操作函数小结
		通过上两篇的介绍,我们的redis服务器基本跑起来.db都具有最基本的CRUD功能,我们沿着这个脉络,开始学习redis丰富的数据结构之旅,当然先从最简单且常用的string开始. 1.新增 a)se ... 
- Redis系列-存储篇set主要操作函数小结
		最近,总是以“太忙“为借口,很久没有blog了,凡事贵在恒,希望我能够坚持不懈,毕竟在blog的时候,也能提升自己.废话不说了,直奔主题”set“ redis set 是string类型对象的无序集合 ... 
- Redis系列-存储篇hash主要操作函数小结
		阳光透过玻璃,洒在身上,一杯暖茶在手,说不尽的安逸自得,让我有种想再写篇blog的冲动.上篇主要谈了string,这里谈谈hash吧!hash是一些列key value(field value)的映射 ... 
- Redis系列-存储篇list主要操作函数小结
		在总结list之前,先要弄明白几个跟list相关的概念: 列表:一个从左到右的队列,个人理解更类似于一个栈,常规模式下,先进列表的元素,后出. 表头元素:列表最左端第一个元素. 表尾元素:列表最右端的 ... 
- Redis系列-存储篇list主要操作函数小结(转)
		在总结list之前,先要弄明白几个跟list相关的概念: 列表:一个从左到右的队列,个人理解更类似于一个栈,常规模式下,先进列表的元素,后出. 表头元素:列表最左端第一个元素. 表尾元素:列表最右端的 ... 
- Redis系列-存储hash主要操作命令
		Redis系列-存储篇hash主要操作函数小结 hash是一些列key value(field value)的映射表.常常用其存储一些对象实例.相对于把一个对象的各个字段存储为string,存储为ha ... 
随机推荐
- asp.net开发中经常用到的方法
			---天气插件--- <iframe width="560" scrolling="no" height="23" framebord ... 
- Android 随想录之 Android 系统架构
			应用层(Application) Android 的应用层由运行在 Android 设备上的所有应用程序共同构成(系统预装程序以及第三方应用程序). 系统预装应用程序包含拨号软件.短信.联系人.邮件客 ... 
- JQuery $()后面的括号里的内容什么时候加引号,什么时候不加
			一.如果是已经声明存在的变量或者对象,就不用加引号. 比如var name=document.getElementById("name"); $(name)或者$(this). 二 ... 
- Spring集成JPA提示Not an managed type
			在做Spring与JPA集成时,出现问题如下: Caused by: java.lang.IllegalArgumentException: Not an managed type: class co ... 
- 转:C语言中的static变量和C++静态数据成员(static member)
			转自:C语言中的static变量和C++静态数据成员(static member) C语言中static的变量:1).static局部变量 a.静态局部变量在函数内定义,生存期为整个程序 ... 
- 转!! Java中ThreadLocal的设计与使用
			首先,ThreadLocal 不是用来解决共享对象的多线程访问问题的,一般情况下,通过ThreadLocal.set() 到线程中的对象是该线程自己使用的对象,其他线程是不需要访问的,也访问不到的.各 ... 
- hiho_1067_最近公共祖先2
			题目大意 给出一棵家谱树,树中的节点都有一个名字,保证每个名字都是唯一的,然后进行若干次查询,找出两个名字的最近公共祖先. 题目链接最近公共祖先 分析 数据量大,根据题目提示,采用Tarjan + 并 ... 
- Ajax中eval的使用详解
			定义和用法 Eval它是用来计算某个字符串,并且执行其中的JavaScript代码. 语法 1) eval函数接受一个string这个参数,并且这个参数是必须的,这个参数就是要计算的这个字符串.它里面 ... 
- linux笔记:linux系统安装-虚拟机网络设置
			vmware虚拟机网络配置的3种方式: 1.桥接:在桥接模式下,VMWare虚拟出来的操作系统就像是局域网中的一台独立的主机(主机和虚拟机处于对等地位),它可以访问网内任何一台机器.在桥接模式下,我们 ... 
- 1.1 ASP.NET MVC简介
			1.什么是ASP.NET MVC? (1)它是个怎么样的产品? ASP.NET MVC是微软公司.NET平台上的一个Web开发框架,它为开发者提供了一种构建结构良好的Web应用程序的方式.自2007年 ... 
