Redis 有序集合(sorted set)

11 篇文章 1 订阅
Redis 有序集合(sorted set)
Redis有序集合和集合也是String类型元素的集合,且不允许重复的成员。

不同的是每一个元素都会关联一个double类型的分数,redis正是通过这些分数来为集合总的成员进行从小达到的排序,有序集合的成员是唯一的,但分数(score)却可以重复。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。


zadd key score1 member1[score2 member2]

描述:将一个或多个成员元素及其分数值加入到有序集当中,如果某个成员已经是有序集的成员,那么更新这个成员的分数值,并通过重新插入这个成员元素,来保证该成员在正确的位置上。分数值可以是整数值或双精度浮点数

返回值:被成功添加的新成员的数量,不包括那些被更新的,已经存在的成员

127.0.0.1:6379> zadd myzset 1 "one"
(integer) 1
127.0.0.1:6379> zadd myzset 1 "two"
(integer) 1
127.0.0.1:6379> zadd myzset 2 "two" 3 "three" 4 "foure"
(integer) 2
127.0.0.1:6379> zrange myzset 0 -1 withscores
1) "one"
2) "1"
3) "two"
4) "2"
5) "three"
6) "3"
7) "foure"
8) "4"

zcard key

描述:用于计算集合中元素的数量

返回值:当key存在且是有序集类型时,返回有序集的基数,当key不存在时,返回0

127.0.0.1:6379> zadd myzset 1 one
(integer) 1
127.0.0.1:6379> zadd myzset 2 two
(integer) 1
127.0.0.1:6379> zcard myzset
(integer) 2

zcount key min max

描述:用于计算有序集合中指定分数区间的成员数量

返回值:分数值在min和max之间的成员的数量

127.0.0.1:6379> zadd myzset 1 one 2 two 3 three 4 four
(integer) 4
127.0.0.1:6379> zcount myzset 2 3
(integer) 2

zincrby key increment member

描述:有序集合中指定成员分数加上增量increment

返回值:member成员的新分数值

127.0.0.1:6379> zadd myzset 1 one 2 two
(integer) 2
127.0.0.1:6379> zincrby myzset 3 one
"4"
127.0.0.1:6379> zrange myzset 0 -1 withscores
1) "two"
2) "2"
3) "one"
4) "4"

zrange key start stop [withscores]

描述:返回有序集中,指定区间内的成员,其中成员的位置按分数值的递增(从小到大)来排列,具有相同分数值的成员按照字典序来排列

返回值:指定区间内,带有分数值的有序集成员的列表

127.0.0.1:6379> zadd myzset 1 one 2 two 3 three 4 four
(integer) 4
127.0.0.1:6379> zrange myzset 0 -1 withscores
1) "one"
2) "1"
3) "two"
4) "2"
5) "three"
6) "3"
7) "four"
8) "4"
127.0.0.1:6379> zrange myzset 1 2 withscores
1) "two"
2) "2"
3) "three"
4) "3"
127.0.0.1:6379> zrange myzset 0 1000 withscores
1) "one"
2) "1"
3) "two"
4) "2"
5) "three"
6) "3"
7) "four"
8) "4"
127.0.0.1:6379> zrange myzset 1000 2000 withscores
(empty list or set)
127.0.0.1:6379>

zrangebyscore key min max [withscores]

描述:返回有序集合中指定分数区间的成员列表,有序集成员按分数值递增(从小到大)次序排列,区间的使用闭区间(小于等于或大于等于),你也可以通过参数前增加(符号来使用可选的开区间(小于或大于).ss

举个列子:

zrangebyscore zest (1 5

返回所有符合条件1 < score <= 5的成员,而

Zrangebyscore zset (5 (10

则返回所有符合条件5 < score < 10的成员

127.0.0.1:6379> zadd myzset 1 one 2 two 3 three 4 four
(integer) 4
# 显示整个有序集
127.0.0.1:6379> zrangebyscore myzset -inf +inf
1) "one"
2) "two"
3) "three"
4) "four"
# 显示整个有序集及成员的score值
127.0.0.1:6379> zrangebyscore myzset -inf +inf withscores
1) "one"
2) "1"
3) "two"
4) "2"
5) "three"
6) "3"
7) "four"
8) "4"
# 显示值 <=3的所有成员
127.0.0.1:6379> zrangebyscore myzset -inf 3 withscores
1) "one"
2) "1"
3) "two"
4) "2"
5) "three"
6) "3"
# 显示值大于3小于等于4的所有成员
127.0.0.1:6379> zrangebyscore myzset (3 4
1) "four"

zrank key member

描述:返回有序集中指定成员的排名,其中有序集成员按分数值递增(从小到大)顺序排列

返回值:如果成员是有序集key的成员,返回member的排名,如果成员不是有序集key的成员,返回nil

127.0.0.1:6379> zadd myzset 1 one 2 two 3 three 4 four
(integer) 4
127.0.0.1:6379> zrange myzset 0 -1 withscores
1) "one"
2) "1"
3) "two"
4) "2"
5) "three"
6) "3"
7) "four"
8) "4"
127.0.0.1:6379> zrank myzset three
(integer) 2

zrem key member [member…]

描述:用于移除有序集中的一个或多个成员,不存在的成员将被忽略

返回值:被成功移除的成员的数量,不包括被忽略的成员

127.0.0.1:6379> zadd myzset 8 bing.com 9 baidu.com 10 google.com
(integer) 3
127.0.0.1:6379> zrem myzset google.com
(integer) 1
127.0.0.1:6379> zrange myzset 0 -1 withscores
1) "bing.com"
2) "8"
3) "baidu.com"
4) "9"

zremrangebyrank key start stop

描述:用于移除有序集中,指定排名区间内的所有成员

返回值:被移除成员的数量

 127.0.0.1:6379> zadd myzset 2000 jack 5000 tom 3500 peter
(integer) 3
# 移除下标0至1区间内的成员(从小到大排列)
127.0.0.1:6379> zremrangebyrank myzset 0 1
(integer) 2
127.0.0.1:6379> zrange myzset 0 -1 withscores
1) "tom"
2) "5000" 

zremrangebyscore key min max

描述:用于移除有序集中,指定分数(score)区间内的所有成员

返回值:被移除成员的数量

127.0.0.1:6379> zadd myzset 2000 jack 5000 tom 3500 peter
(integer) 3
127.0.0.1:6379> zremrangebyscore myzset 2001 4900
(integer) 1
127.0.0.1:6379> zrange myzset 0 -1 withscores
1) "jack"
2) "2000"
3) "tom"
4) "5000"

zrevrange key start stop [withscores]

描述:返回有序集中,指定区间内的成员,其中成员的位置按分数值递减(从大到小)来排列

返回值:指定区间内,带有分数值(可选)的有序集成员列表

127.0.0.1:6379> zadd myzset 2000 jack 5000 tom 3500 peter
(integer) 3
127.0.0.1:6379> zrange myzset 0 -1 withscores
1) "jack"
2) "2000"
3) "peter"
4) "3500"
5) "tom"
6) "5000"
127.0.0.1:6379> zrevrange myzset 0 -1 withscores
1) "tom"
2) "5000"
3) "peter"
4) "3500"
5) "jack"
6) "2000"

zrevrangebyscore key max min [withscores]

描述:返回有序集中指定分数区间内的所有成员,有序集成员按分数值递减(从大到小)的次序排列

返回值:指定区间内,带有分数值(可选)的有序集成员的列表

127.0.0.1:6379> zadd salary 10086 jack 500 tom 7500 peter 3500 joe
(integer) 4
# 逆序排列所有成员
127.0.0.1:6379> zrevrangebyscore salary +inf -inf
1) "jack"
2) "peter"
3) "joe"
4) "tom"
# 逆序排列的值介于 10000和2000之间
127.0.0.1:6379> zrevrangebyscore salary 10000 2000
1) "peter"
2) "joe"

zrevrank key member

描述:返回有序集中成员的排名,其中有序集成员按分数值递减(从大到小)排列

返回值:如果成员是有序集key的成员,返回成员的排名,如果成员不是有序集key的成员,返回nil

127.0.0.1:6379> zadd myzset 1 one 2 two 3 three
(integer) 3
127.0.0.1:6379> zrevrank myzset one
(integer) 2
127.0.0.1:6379> zrevrank myzset three
(integer) 0

zscore key member

描述:返回有序集中,成员的分数值

返回值:成员的分数值,以字符串形式表示

127.0.0.1:6379> zrange myzset 0 -1 withscores
1) "one"
2) "1"
3) "two"
4) "2"
5) "three"
6) "3"
127.0.0.1:6379> zscore myzset three
"3"
127.0.0.1:6379> zscore myzset one
"1"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值