Redis学习07——存储有序字符串集合(sorted set)

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

例如:游戏排名、微博热点话题等使用场景。

 

二、添加元素
命令:

zadd key score1 member1 score2 member2 ....
1
含义: 
将所有成员以及该成员的分数存放到sorted-set中, 
如果该元素己经存在则会用新的分数替已有的分数。返回值是新加入到集合中的元素个数 
不包含之前己经存在的元索。

示例

127.0.0.1:6379> zadd mysortedset 5 wiming 10 xiaoming 30 qiwenming 40 wenming
(integer) 4
1
2
3
三、获得元素
3.1 zscore key member
命令:

zscore key member
1
含义: 
返回指定成员的分数

示例

127.0.0.1:6379> zscore mysortedset wiming
"5"
1
2
3.2 zcard key
命令:

zcard key
1
含义: 
获取集合中的成员数量

示例

127.0.0.1:6379> zcard mysortedset
(integer) 4
1
2
三、删除元素
命令:

zrem key member1 member2 ....
1
含义: 
移除集合中指定的成员,可以指定多个成员

示例

127.0.0.1:6379> zrem mysortedset wiming wenming
(integer) 2
1
2
3
四、范围查询
4.1 zrange key start end [withscores]
命令:

zrange key start end [withscores]
1
含义: 
获取集合集中脚标为start-end的成员,[withscores]参数表明返回的成员包含其分数(可选)

示例

127.0.0.1:6379> zrange mysortedset 0 -1
1) "xiaoming"
2) "qiwenming"
127.0.0.1:6379> zrange mysortedset 0 -1 withscores
1) "xiaoming"
2) "10"
3) "qiwenming"
4) "30"
1
2
3
4
5
6
7
8
9
4.2 zrevrange key start end [withscores]
命令:

zrevrange key start end [withscores]
1
含义: 
获取集合集中脚标为start-end的成员(按分数从大到小,和上面的指令相反),[withscores]参数表明返回的成员包含其分数(可选)

示例

127.0.0.1:6379> zrevrange mysortedset 0 -1
1) "qiwenming"
2) "xiaoming"
127.0.0.1:6379> zrevrange mysortedset 0 -1 withscores
1) "qiwenming"
2) "30"
3) "xiaoming"
4) "10"
1
2
3
4
5
6
7
8
9
4.3 zremrangebyrank key start end
命令:

zremrangebyrank key start end
1
含义: 
按照排名范围删除元素

示例

127.0.0.1:6379> zadd mysortedset 5 wiming 35 qiwenming 40 qwm
(integer) 2
127.0.0.1:6379> zrange mysortedset 0 -1 withscores
1) "wiming"
2) "5"
3) "xiaoming"
4) "10"
5) "qiwenming"
6) "35"
7) "qwm"
8) "40"
127.0.0.1:6379> zremrangebyrank mysortedset 0 1
(integer) 2
127.0.0.1:6379> zrange mysortedset 0 -1
1) "qiwenming"
2) "qwm"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
4.4 zremrangebyscore key min max
命令:

zremrangebyscore key min max
1
含义: 
按照分数范围删除元素

示例

127.0.0.1:6379> zadd mysortedset 5 wiming 10 xiaoming
(integer) 2
127.0.0.1:6379> zrange mysortedset 0 -1 withscores
1) "wiming"
2) "5"
3) "xiaoming"
4) "10"
5) "qiwenming"
6) "35"
7) "qwm"
8) "40"
127.0.0.1:6379> zremrangebyscore mysortedset 10 35
(integer) 2
127.0.0.1:6379> zrange mysortedset 0 -1 withscores
1) "wiming"
2) "5"
3) "qwm"
4) "40"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
五、其他命令
5.1 zrangebyscore key min max [withscores] [limit offset count]
命令:

zrangebyscore by min max [withscores] [limit offset count]
1
含义: 
返回分数在[min,max]的成员并按照分数从低到高拍讯。[withscores]:显示分数。[limit offset count]:offset ,表明从脚标为offset的元素开始,返回count个元素

示例

127.0.0.1:6379> zadd mysortedset 10 xiaoming 30 qiwenming
(integer) 2
127.0.0.1:6379> zrange mysortedset 0 -1 withscores
1) "wiming"
2) "5"
3) "xiaoming"
4) "10"
5) "qiwenming"
6) "30"
7) "qwm"
8) "40"
127.0.0.1:6379> zrangebyscore mysortedset 5 40 withscores
1) "wiming"
2) "5"
3) "xiaoming"
4) "10"
5) "qiwenming"
6) "30"
7) "qwm"
8) "40"
127.0.0.1:6379> zrangebyscore mysortedset 5 40 withscores limit 0 2
1) "wiming"
2) "5"
3) "xiaoming"
4) "10"
127.0.0.1:6379> 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
5.2 zincrby key increment member
命令:

zincrby key increment member
1
含义: 
设置指定成员的增加分数。返回值是更改以后的分数。

示例

127.0.0.1:6379> zincrby mysorted 10 xiaoming
"20"
1
2
5.3 zcount key min max
命令:

zcount key min max 
1
含义: 
获取分数在[min,max]的成员数量

示例

127.0.0.1:6379> zrange mysortedset 0 -1 withscores
1) "wiming"
2) "5"
3) "xiaoming"
4) "10"
5) "qiwenming"
6) "30"
7) "qwm"
8) "40"
127.0.0.1:6379> zcount mysortedset 5 20
(integer) 2
1
2
3
4
5
6
7
8
9
10
11
12
5.4 zrank key member
命令:

zrank key member
1
含义: 
返回成员在集合中的排名(从小到大)

示例

127.0.0.1:6379> zrange mysortedset 0 -1
1) "wiming"
2) "xiaoming"
3) "qiwenming"
4) "qwm"
127.0.0.1:6379> zrank mysortedset xiaoming
(integer) 1
1
2
3
4
5
6
7
8
5.5 zrevrank key member
命令:

zrevrank key member
1
含义: 
返回成员在集合中的排名(从大到小)

示例

127.0.0.1:6379> zrange mysortedset 0 -1
1) "wiming"
2) "xiaoming"
3) "qiwenming"
4) "qwm"
127.0.0.1:6379> zrank mysortedset xiaoming
(integer) 1
127.0.0.1:6379> zrevrank mysortedset xiaoming
(integer) 2
--------------------- 
作者:愤怒的小明 
来源:CSDN 
原文:https://blog.csdn.net/qiwenmingshiwo/article/details/78118870 
版权声明:本文为博主原创文章,转载请附上博文链接!

posted @ 2019-04-18 20:43  一心二念  阅读(126)  评论(0编辑  收藏  举报