7.Redis常用命令:ZSet

  Sorted-Sets和Sets类型极为相似,它们都是字符串的集合,都不允许重复的成员出现在一个Set中。它们之间的主要差别是Sorted-Sets中的每一个成员都会有一个分数(score)与之关联,Redis正是通过分数来为集合中的成员进行从小到大的排序。然而需要额外指出的是,尽管Sorted-Sets中的成员必须是唯一的,但是分数(score)却是可以重复的。   在Sorted-Set中添加、删除或更新一个成员都是非常快速的操作,其时间复杂度为集合中成员数量的对数。由于Sorted-Sets中的成员在集合中的位置是有序的,因此,即便是访问位于集合中部的成员也仍然是非常高效的。事实上,Redis所具有的这一特征在很多其它类型的数据库中是很难实现的,换句话说,在该点上要想达到和Redis同样的高效,在其它数据库中进行建模是非常困难的。

1、ZADD key score member [score] [member]

增加多个成员

127.0.0.1:6379> zadd CountryPower 99 America 90 China 97 Russia 80 Brazil 89 Japan
(integer) 5
127.0.0.1:6379> zrange CountryPower 0 -1 withscores
 1) "Brazil"
 2) "80"
 3) "Japan"
 4) "89"
 5) "China"
 6) "90"
 7) "Russia"
 8) "97"
 9) "America"
10) "99"

2、ZREM key member [member ...]

该命令将移除参数中指定的成员,其中不存在的成员将被忽略。

127.0.0.1:6379> zrange CountryPower 0 -1 withscores
 1) "Brazil"
 2) "80"
 3) "Japan"
 4) "89"
 5) "China"
 6) "90"
 7) "Russia"
 8) "97"
 9) "America"
10) "99"
127.0.0.1:6379> zrem CountryPower Brazil Japan
(integer) 2
127.0.0.1:6379> zrange CountryPower 0 -1 withscores
1) "China"
2) "90"
3) "Russia"
4) "97"
5) "America"
6) "99"

3、ZINCRBY key increment member

为key中的member加指定分数(increment)

127.0.0.1:6379> zrange CountryPower 0 -1 withscores
1) "China"
2) "90"
3) "Russia"
4) "97"
5) "America"
6) "99"
127.0.0.1:6379> zincrby CountryPower 5 China  //为中国增加5点
"95"
127.0.0.1:6379> zrange CountryPower 0 -1 withscores
1) "China"
2) "95"
3) "Russia"
4) "97"
5) "America"
6) "99"

4、ZSCORE key member

获取指定Key的指定成员的分数

127.0.0.1:6379> zrange CountryPower 0 -1 withscores
1) "China"
2) "95"
3) "Russia"
4) "97"
5) "America"
6) "99"
127.0.0.1:6379> zscore CountryPower China
"95"

5、ZRANK key member

返回成员在列表中的下标

127.0.0.1:6379> zrange CountryPower 0 -1 withscores
1) "China"
2) "95"
3) "Russia"
4) "97"
5) "America"
6) "99"
127.0.0.1:6379> zrank CountryPower Russia
(integer) 1

6、ZREVRANK key member 

该命令的功能和ZRANK基本相同,唯一的差别在于该命令获取的索引是从高到低排序后的位置,同样0表示第一个元素,即分数最高的成员。

127.0.0.1:6379> zrange CountryPower 0 -1 withscores
1) "China"
2) "95"
3) "Russia"
4) "97"
5) "America"
6) "99"
127.0.0.1:6379> zrank CountryPower America
(integer) 2
127.0.0.1:6379> zrevrank CountryPower America
(integer) 0

7、ZCARD key

成员数量

127.0.0.1:6379> zrange CountryPower 0 -1 withscores
1) "China"
2) "95"
3) "Russia"
4) "97"
5) "America"
6) "99"
127.0.0.1:6379> zcard CountryPower
(integer) 3

8、ZCOUNT key min max

计算分数在min与max之间的成员数量。针对min和max参数需要额外说明的是,-inf和+inf分别表示Sorted-Sets中分数的最高值和最低值。缺省情况下,min和max表示的范围是闭区间范围,即min <= score <= max内的成员将被返回。然而我们可以通过在min和max的前面添加"("字符来表示开区间,如(min max表示min < score <= max,而(min (max表示min < score < max。

127.0.0.1:6379> zrange CountryPower 0 -1 withscores
 1) "France"
 2) "85"
 3) "German"
 4) "88"
 5) "Japan"
 6) "89"
 7) "China"
 8) "95"
 9) "Russia"
10) "97"
11) "America"
12) "99"
127.0.0.1:6379> zcount CountryPower 90 +inf   //从90分到最高分
(integer) 3
127.0.0.1:6379> zcount CountryPower -inf 90  //从最低分到90分
(integer) 3
127.0.0.1:6379> zcount CountryPower 85 89  //从85分(包含)到89分(包含)
(integer) 3
127.0.0.1:6379> zcount CountryPower (85 (89  //从85分(不包含)到89分(不包含)
(integer) 1

----------------------  范围筛选  ----------------------  

9、ZRANGE key start stop [WITHSCORES] 

截取范围内的成员(自选带分数)

127.0.0.1:6379> zrange CountryPower 0 -1 withscores
 1) "France"
 2) "85"
 3) "German"
 4) "88"
 5) "Japan"
 6) "89"
 7) "China"
 8) "95"
 9) "Russia"
10) "97"
11) "America"
12) "99"

10、ZREVRANGE key start stop [WITHSCORES]

该命令的功能和ZRANGE基本相同,唯一的差别在于该命令是通过反向排序获取指定位置的成员,即从高到低的顺序。

127.0.0.1:6379> zrevrange CountryPower 0 -1 withscores
 1) "America"
 2) "99"
 3) "Russia"
 4) "97"
 5) "China"
 6) "95"
 7) "Japan"
 8) "89"
 9) "German"
10) "88"
11) "France"
12) "85"

11、ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] 

返回分数满足表达式min <= score <= max的成员,其中返回的成员是按照其分数从低到高的顺序返回,如果成员具有相同的分数,则按成员的字典顺序返回。LIMIT用于限制返回成员的数量范围。可选参数offset表示从符合条件的第offset个成员开始返回,同时返回count个成员。参数中min和max的规则可参照命令ZCOUNT

127.0.0.1:6379> zrevrange CountryPower 0 -1 withscores
 1) "America"
 2) "99"
 3) "Russia"
 4) "97"
 5) "China"
 6) "95"
 7) "Japan"
 8) "89"
 9) "German"
10) "88"
11) "France"
12) "85"
127.0.0.1:6379> zrangebyscore CountryPower 90 99 withscores  //95 97 99
1) "China"
2) "95"
3) "Russia"
4) "97"
5) "America"
6) "99"
127.0.0.1:6379> zrangebyscore CountryPower 90 99 withscores limit 1 2 //从取得的结果,从下标为1开始取,取2个  
1) "Russia"
2) "97"
3) "America"
4) "99"

12、ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]

该命令除了排序方式是基于从高到低的分数排序之外,其它功能和参数含义均与ZRANGEBYSCORE相同。

127.0.0.1:6379> zrevrangebyscore CountryPower 99 90 withscores
1) "America"
2) "99"
3) "Russia"
4) "97"
5) "China"
6) "95"
127.0.0.1:6379> zrevrangebyscore CountryPower 99 90 withscores limit 0 2
1) "America"
2) "99"
3) "Russia"
4) "97"

-------------  批量删除 -------------

13、ZREMRANGEBYRANK key start stop

删除索引位置位于start和stop之间的成员,start和stop都是0-based,即0表示分数最低的成员,-1表示最后一个成员,即分数最高的成员。

127.0.0.1:6379> zrange CountryPower 0 -1 withscores
 1) "France"
 2) "85"
 3) "German"
 4) "88"
 5) "Japan"
 6) "89"
 7) "China"
 8) "95"
 9) "Russia"
10) "97"
11) "America"
12) "99"
127.0.0.1:6379> zremrangebyrank CountryPower 0 1
(integer) 2
127.0.0.1:6379> zrange CountryPower 0 -1 withscores
1) "Japan"
2) "89"
3) "China"
4) "95"
5) "Russia"
6) "97"
7) "America"
8) "99"

14、ZREMRANGEBYSCORE key min max

删除分数在min和max之间的所有成员,即满足表达式min <= score <= max的所有成员。对于min和max参数,可以采用开区间的方式表示,具体规则参照ZCOUNT。

127.0.0.1:6379> zrange CountryPower 0 -1 withscores
1) "Japan"
2) "89"
3) "China"
4) "95"
5) "Russia"
6) "97"
7) "America"
8) "99"
127.0.0.1:6379> zremrangebyscore CountryPower -inf 95  //删除95分(含)以下的
(integer) 2
127.0.0.1:6379> zrange CountryPower 0 -1 withscores
1) "Russia"
2) "97"
3) "America"
4) "99"

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Golang语言社区

Go 语言Map(集合)

Map 是一种无序的键值对的集合。Map 最重要的一点是通过 key 来快速检索数据,key 类似于索引,指向数据的值。 Map 是一种集合,所以我们可以像迭代...

3637
来自专栏一个会写诗的程序员的博客

禅与 JavaScript 编程艺术, Zen and The Art of JavaScript Programming禅与 JavaScript 编程艺术

Zen and The Art of JavaScript Programming

1201
来自专栏函数式编程语言及工具

Akka(18): Stream:组合数据流,组件-Graph components

   akka-stream的数据流可以由一些组件组合而成。这些组件统称数据流图Graph,它描述了数据流向和处理环节。Source,Flow,Sink是最基础...

2586
来自专栏ml

位运算的方法,大结

Title:       位操作基础篇之位操作全面总结 Author:     MoreWindows E-mail:      morewindows@126...

6148
来自专栏鸿的学习笔记

写给开发者的机器学习指南(十二)

此代码加载DJI数据,并将其添加到已经包含我们自己的股票市场指数的图形上。但是,当我们执行这段代码时,结果如下。

1112
来自专栏Hongten

java开发_数字转换汉语中人民币的大写_完整版

======================================================

2833
来自专栏码匠的流水账

聊聊storm的WindowedBolt

storm-2.0.0/storm-client/src/jvm/org/apache/storm/topology/IWindowedBolt.java

2314
来自专栏LhWorld哥陪你聊算法

Hadoop源码篇--Reduce篇

Reduce文件会从Mapper任务中拉取很多小文件,小文件内部有序,但是整体是没序的,Reduce会合并小文件,然后套个归并算法,变成一个整体有序的文件。

2481
来自专栏PPV课数据科学社区

【学习】七天搞定SAS(二):基本操作(判断、运算、基本函数)

SAS生成新变量 SAS支持基本的加减乘除,值得一提的是它的**代表指数,而不是^。 * Modify homegarden data set with ass...

4644
来自专栏mukekeheart的iOS之旅

No.009 Palindrome Number

9. Palindrome Number Total Accepted: 136330 Total Submissions: 418995 Difficulty...

2287

扫码关注云+社区

领取腾讯云代金券