使用教程(六):有序集合的数据类型
1。总结:排序集和集合类型非常相似,它们都是字符串集合,不允许重复成员出现在集合中。它们之间的主要区别是排序集中的每个成员都有一个分数(得分)。redis是排序的成员从小到大的分数。然而,需要指出的是,虽然排序的集合的成员必须是独特的,分数是可重复的。
添加,删除,或在排序集更新的成员是一个非常快的操作,其时间复杂度是该组成员数量的对数。以来的有序集合的成员在集合中的一个有序的位置,甚至获得各成员在集合中还很有效的。事实上,这一特点redis是难在许多其他类型的数据库实现。换句话说,实现相同的效率使用,这在其他数据库模型是非常困难的。
两。相关命令列表:
T
命令的原型
时间复杂度
命令描述
返回值
关键进球得分} { Zadd成员成员} {
o(log(n))
n在时间复杂度表明在sorted-sets.add所有成员在参数和评分排序的指定键指定成员的数目。在该命令,我们可以指定一些得分/成员作为参数。如果成员中存在的参数增加时,该命令将作为一个新的值更新该成员的评分,并将基于新价值的成员。如果该键不存在,该命令将创建一个新的有序集合值的关键和插入得分/会员对到它。如果键已经存在,相关的值不是一个有序集合类型,以及相关的错误信息将被退回。
实际插入此操作中的成员数。
zcard关键
o(1)
获取与键关联的排序集中包含的成员数。
返回排序集中的成员数量,如果键不存在返回0。
zcountkey最小最大
o(log(n)+ m)
n在时间复杂性表明有序集合成员数,M表示元素之间的最小和最大。这个命令是用来获取成员的人数(分数)之间的最小和最大。为民和马克斯参数,附加的描述是,-Inf和Inf代表最高和最低值在有序集合,分数分别。默认情况下,民和马克斯的范围是一个封闭的区间范围,即最小最大比分<< =成员将返回。不过,我们可以在前面加上MIN和马克斯(字符来表示开区间,如最小(最大最小<评分<=说max,和(min(max min≤评分<最大。
指定范围内的成员数。
zincrbykey增量构件
o(log(n))
n在时间复杂度表明在sorted-sets.this指挥成员的数目将在指定的键指定的成员添加指定的得分。如果一个成员不存在,该命令将添加成员并承担其初始分数是0,然后再加入其得分增加。如果不保存,该命令将创建该键及其关联的有序集合,包含由参数指定的成员,其分数增量参数。如果有序集合类型是不是与密钥相关的,相关的错误信息将被退回。
用一个字符串表示的新分数。
zrangekey启停{初中}
o(log(n)+ m)
n在时间复杂度表示排序的成员的数目,和M代表成员数返回。命令返回的成员在参数指定的范围内启动和停止,在启动和停止的参数是0,即0代表第一个成员,和1个代表最后一个成员。如果开始比排序的最大索引值,或开始-停止,空集将返回在这个时候。如果停止超过最大索引值,该命令将返回最后一个成员从开始的集合。如果该命令的可选参数积分选项,命令将包含在返回的结果的每一个成员的子值,如value1,value2 1,score2… U3000 U3000
在起始和停止之间的索引之间返回成员列表。
zrangebyscore min max { } {关键积分极限偏移数}
o(log(n)+ m)
n在时间复杂度表示排序的成员的数目,和M代表成员数返回。命令返回的最小和最大值之间的分数的所有成员,能够满足表达民<=评分<=最大的成员,它返回一个成员在他们的根据返回的分数从低到高的顺序,如果成员有相同的得分,根据成员的命令返回的字典。可选参数限制用来限制返回的成员数量范围。可选参数偏移表明偏移成员,符合条件的开始返回返回计数员,可选参数的含义是指初中在zrange此选项的描述,解释的最后一件事是,在参数的最小和马克斯规则可以被称为命令zcount。
返回指定范围内的成员列表。
Zrank关键成员
o(log(n))
n在时间复杂度表示排序设置在sorted-set.the成员成员数存储在低分数要高。该命令返回参数中指定成员的位置值,其中0表示第一个成员,它是排序集中的最低成员。
如果成员存在,则返回其位置的索引值。
zrem关键成员成员{…}
O(m log(n))
在时间复杂度中,n表示排序集中的成员数,m表示已删除成员的数目。此命令将删除参数中指定的成员,不存在的成员将被忽略。如果与键关联的值没有排序,则将返回相应的错误信息。
实际删除的成员数。
zrevrange键有始有终{初中}
o(log(n)+ m)
n在时间复杂度表示排序的成员的数目,和M代表成员数返回。该命令的功能是基本相同的,zrange。唯一不同的是,该命令是获取指定位置的反向排序,这是成员,从高到低的顺序。如果成员有相同的分数,他们是在下降的字典顺序排序。
返回指定的成员列表。
zrevrankkey成员
O(log(n))
n在时间复杂度表示该命令的sorted-set.the函数成员的数量基本相同,Zrank。唯一的区别是,由命令获得的索引从高到低排列,而相同的0代表第一个元素,即最高得分成员。
如果成员存在,则返回其位置的索引值。
zscorekey成员
o(1)
获取指定键的指定成员的得分。
如果成员存在,则以字符串的形式返回其分数,或返回0。
zrevrangebyscorekey { } {限制最大最小积分偏移数}
o(log(n)+ m)
n在时间复杂度表示排序的成员的数目,和M代表成员数返回。除了排序顺序的命令是基于从高到低排名,和其他的功能和参数都作为zrangebyscore相同。
返回指定范围内的成员列表。
zremrangebyrankkey启停
o(log(n)+ m)
n在时间复杂度表示排序的成员的数目,和M代表删除的成员数量。删除启动和停止成员之间的索引位置,启动和停止都是0,即0个代表得分最低的成员,1代表最后一个成员,得分最高的成员。
删除成员的数目。
zremrangebyscorekey最小最大
o(log(n)+ m)
n在时间复杂度表示排序的成员的数目,和M代表删除的成员数量。删除民和马克斯之间的分数的所有成员,以满足表达的最小得分马克斯<<所有成员。为民和马克斯参数,开区间可表示参数,以及具体的规则指的是zcount。
删除成员的数目。
三。An example of the command:
1。zcard Zadd / / / / zcount zrem zincrby / / / Zrank zrange ZSCORE:
复制代码代码如下所示:
#启动redis客户端在shell命令行工具。
使用CLI / >
#添加1的成员的一部分。
Redis 127.0.0.1:6379 > Zadd myzset 1的一个
(整数)1
#添加两评分两和3的2名成员。
Redis 127.0.0.1:6379 > Zadd myzset 2两3 三
(整数)2
# 0代表第一名,和1个代表的最后成员,积分选项表明返回的结果包含每个成员的成绩,否则只有成员返回。
Redis 127.0.0.1:6379 > zrange myzset 0-1积分
1)一
2)1
3)二
4)2
5)三
6)3
#访问位置指数的成员之一,价值排序集。0是第一位的。
Redis 127.0.0.1:6379 > Zrank myzset一
(整数)0
#成员四不存在,那么返回nil。
Redis 127.0.0.1:6379 > Zrank myzset四
(无)
在#收购债券的myzset成员人数。
Redis 127.0.0.1:6379 > zcard myzset
(整数)3
排序集#返回与myzset相关,分数表达满足1 < =评分≤2的成员数。
Redis 127.0.0.1:6379 > zcount myzset 12
(整数)2
#删除成员一和二,退货数量实际删除成员。
Redis 127.0.0.1:6379 > zrem myzset两
(整数)2
检查是否#成功删除。
Redis 127.0.0.1:6379 > zcard myzset
(整数)1
#访问的三组成员,返回值是一个字符串的形式。
Redis 127.0.0.1:6379 > ZSCORE myzset三
3
#作为两个成员已被删除,所以命令返回nil。
Redis 127.0.0.1:6379 > ZSCORE myzset两
(无)
#将一部分成员增加了2,并返回该更新分数的成员。
Redis 127.0.0.1:6379 > zincrby myzset 2
3
#将成员的一部分- 1,并返回该更新分数的成员。
Redis 127.0.0.1:6379 > zincrby myzset - 1人
2
#视图在评分成员的更新权。
Redis 127.0.0.1:6379 > zrange myzset 0-1积分
1)一
2)2
3)二
4)2
5)三
6)3
2。zrangebyscore / / zremrangebyscore zremrangebyrank
复制代码代码如下所示:
Redis 127.0.0.1:6379 >删除myzset
(整数)1
Redis 127.0.0.1:6379 > Zadd myzset 1一2 3三4四
(整数)4
#得到成员分数表达满意1 <= <= 2分。
Redis 127.0.0.1:6379 > zrangebyscore myzset 12
1)一
2)二
#得到成员分数表达满足1<<=2分。
Redis 127.0.0.1:6379 > zrangebyscore myzset(12
1)二
的# - INF代表第一件,和+ INF代表最后一个成员,在极限参数是用来限制返回的成员自己。
# 2表示从一个位置指数成员(0)等于2到3个成员。
Redis 127.0.0.1:6379 > zrangebyscore myzset -干扰素+干扰素限制23
1)三
2)四
#删除分数表达满意1 <=评分<=2的成员,并返回实际数量的删除。
Redis 127.0.0.1:6379> zremrangebyscore myzset 12
(整数)2
看到上面的#删除成功。
Redis 127.0.0.1:6379 > zrange myzset 0-1
1)三
2)四
#删除位置索引表达式满足0 <= <= 1会员等级。
Redis 127.0.0.1:6379 > zremrangebyrank myzset 01
(整数)2
#视图命令删除成功。
Redis 127.0.0.1:6379 > zcard myzset
(整数)0
三.zrevrange / / zrevrank zrevrangebyscore:
复制代码代码如下所示:
#背后的样品准备测试数据。
Redis 127.0.0.1:6379 >删除myzset
(整数)0
Redis 127.0.0.1:6379 > Zadd myzset 1一2 3三4四
(整数)4
从高到低的访问并返回这个区间的成员地位指数#。
Redis 127.0.0.1:6379 > zrevrange myzset 0-1积分
1)四
2)4
3)三
4)3
5)二
6)2
7)一
8)1
的#从高到低排序,所以位置等于0,四,1,三,等等。
Redis 127.0.0.1:6379 > zrevrange myzset 13
1)三
2)二
3)一
的#从高到低排名,这样的一个位置是3。
Redis 127.0.0.1:6379 > zrevrank myzset一
(整数)3
的#从高到低排序,所以四的位置是0。
Redis 127.0.0.1:6379 > zrevrank myzset四
(整数)0
#得到点满足表达3 > =得分> = 0的成员,为了输出相反,即从高到底的顺序。
Redis 127.0.0.1:6379 > zrevrangebyscore myzset 30
1)三
2)二
3)一
的#命令支持的限制选项,这个选项相当于zrangebyscore的意思,但计算位置的相反的顺序计算。
Redis 127.0.0.1:6379 > zrevrangebyscore myzset 40限12
1)三
2)二
四。应用范围:
1)。它可以用在一个大型网络游戏积分表。每当玩家的分数变化的Zadd命令即可执行更新玩家的得分,然后zrange命令用来获取积分最高的前十名用户的信息。当然,我们也可以使用Zrank命令通过用户名获得玩家的排名信息。最后,我们将使用zrange和Zrank命令组合很快从人相似的球员得到其他用户的信息。
2)。排序集类型也可以用来构建索引数据。