我是靠谱客的博主 高兴小蚂蚁,最近开发中收集的这篇文章主要介绍有序集合类型详解,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

内容简介

Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。

有序集合的成员是唯一的,但分数(score)却可以重复。

集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。

命令

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
127.0.0.1:6379> zadd car 1 stn 2 xtl 4 bm 3 bc #添加一个或者多个到有序集合中
(integer) 4
127.0.0.1:6379> ZRANGE car 0 -1 withscores #获取集合元素及分数
1) "stn"
2) "1"
3) "xtl"
4) "2"
5) "bc"
6) "3"
7) "bm"
8) "4"
127.0.0.1:6379> ZCARD car #统计元素个数
(integer) 4
127.0.0.1:6379> ZCOUNT car 3 4 #获取分数区间的元素个数
(integer) 2
127.0.0.1:6379> ZINCRBY car 4 bm #给元素增加分数
"8"
127.0.0.1:6379> ZRANGE car 0 -1 withscores #获取集合元素及分数
1) "stn"
2) "1"
3) "xtl"
4) "2"
5) "bc"
6) "3"
7) "bm"
8) "8"
127.0.0.1:6379> zadd car2 10 lsls
(integer) 1
127.0.0.1:6379> ZINTERSTORE car3 2 car car2 #把两个集合的交集存到另一个集合中
(integer) 0
127.0.0.1:6379> zadd car2 10 lsls 11 bm
(integer) 1
127.0.0.1:6379> ZINTERSTORE car3 2 car car2
(integer) 1
127.0.0.1:6379> ZRANGE car3 0 0
1) "bm"
127.0.0.1:6379> ZRANGE car3 0 0 withscores
1) "bm"
2) "19"
127.0.0.1:6379> ZRANGEBYSCORE car (3 8 #获取分数区间的元素,(3代表大于3,8代表小于等于8
1) "bm"
127.0.0.1:6379> ZRANGEBYSCORE car (3 8 withscores
1) "bm"
2) "8"
127.0.0.1:6379> ZRANGEBYSCORE car (1 8 withscores
1) "xtl"
2) "2"
3) "bc"
4) "3"
5) "bm"
6) "8"
127.0.0.1:6379> ZRANGEBYSCORE car -inf +inf withscores #获取所有元素,并按照分数排序
1) "stn"
2) "1"
3) "xtl"
4) "2"
5) "bc"
6) "3"
7) "bm"
8) "8"
127.0.0.1:6379> ZRANGEBYSCORE car -inf +inf
1) "stn"
2) "xtl"
3) "bc"
4) "bm"
127.0.0.1:6379> zrange car 0 0
1) "stn"
127.0.0.1:6379> zrange car 0 -1
1) "stn"
2) "xtl"
3) "bc"
4) "bm"
127.0.0.1:6379> zrank car stn #获取指定元素的排名(按照分数排名)
(integer) 0
127.0.0.1:6379> zrank car xtl
(integer) 1
127.0.0.1:6379> zrem car stn xtl #移除指定元素
(integer) 2
127.0.0.1:6379> ZREMRANGEBYRANK car 0 7 #根据排名移除区间内元素
(integer) 2
127.0.0.1:6379> ZRANGE car 0 -1
(empty list or set)
127.0.0.1:6379> zadd car 1 stn 2 xtl 3 bm
(integer) 3
127.0.0.1:6379> ZREMRANGEBYSCORE car 1 2 #移除指定分数区间内元素
(integer) 2
127.0.0.1:6379> zadd car 6 bsj 7 fll 9 lsls
(integer) 3
127.0.0.1:6379> ZREVRANGE car 0 3 #获取指定索引区间内的以分数排名的元素
1) "lsls"
2) "fll"
3) "bsj"
4) "bm"
127.0.0.1:6379> ZREVRANGE car 0 2
1) "lsls"
2) "fll"
3) "bsj"
127.0.0.1:6379> ZREVRANGEBYSCORE car 9 6 #获取指定分数区间内以分数排名的元素
1) "lsls"
2) "fll"
3) "bsj"
127.0.0.1:6379> ZREVRANK car fll #获取指定元素排名
(integer) 1
127.0.0.1:6379> ZREVRANK car lsls
(integer) 0
127.0.0.1:6379> ZREVRANK car bm
(integer) 3
127.0.0.1:6379> zscore car bm #获取元素分数
"3"
127.0.0.1:6379>

最后

以上就是高兴小蚂蚁为你收集整理的有序集合类型详解的全部内容,希望文章能够帮你解决有序集合类型详解所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(61)

评论列表共有 0 条评论

立即
投稿
返回
顶部