Sorted Set与Hash一样,可以存放很多key and value.Sorted Set 的每个key (member)不可以重覆,而且key必须为浮点数,被称为score,可以依据score排序,存取方式与hash相同,也可以依照score与score sort 顺序存取.
可用指令
资料结构
在sorted set 加入member.
127.0.0.1:6379> zadd engtest 90 jack 85 linda
(integer) 2
127.0.0.1:6379> zadd engtest 99 doris 80 eagle
(integer) 2
127.0.0.1:6379> zrange engtest 0 -1
1) "eagle"
2) "linda"
3) "jack"
4) "doris"
127.0.0.1:6379> zrange engtest 0 -1 withscores
1) "eagle"
2) "80"
3) "linda"
4) "85"
5) "jack"
6) "90"
7) "doris"
8) "99"
查询sorted set中的指定最大与最小member并正向排序,可以包含score.
(如果score分数一样则会按照value的字母进行排序)
127.0.0.1:6379> zadd engtest 90 jack 85 linda
(integer) 2
127.0.0.1:6379> zadd engtest 99 doris 80 eagle
(integer) 2
# 0 "eagle" -4
# 1 "linda" -3
# 2 "jack" -2
# 3 "doris" -1
# 取得engtest范围内的member,将score正向排序
127.0.0.1:6379> zrange engtest 0 -1
1) "eagle"
2) "linda"
3) "jack"
4) "doris"
# 取得engtest范围内的member,需要包含score内容
127.0.0.1:6379> zrange engtest 0 -1 withscores
1) "eagle"
2) "80"
3) "linda"
4) "85"
5) "jack"
6) "90"
7) "doris"
8) "99"
# 取得engtest范围内的member,将score反向排序
127.0.0.1:6379> zrange engtest 0 -1 rev
1) "doris"
2) "jack"
3) "linda"
4) "eagle"
# 取得engtest范围内的member中score最高的两个
127.0.0.1:6379> zrange engtest 0 1 rev
1) "doris"
2) "jack"
查询sorted set中的指定最大与最小member并反向排序,可以包含score.
(如果score分数一样则会按照value的字母进行排序)
127.0.0.1:6379> zadd engtest 90 jack 85 linda 99 doris 80 eagle
(integer) 4
# 0 "eagle" -4
# 1 "linda" -3
# 2 "jack" -2
# 3 "doris" -1
# 取得engtest范围内的member,将score反向排序
127.0.0.1:6379> zrevrange engtest 0 -1
1) "doris"
2) "jack"
3) "linda"
4) "eagle"
# 取得engtest范围内的member,需要包含score内容
127.0.0.1:6379> zrevrange engtest 0 -1 withscores
1) "doris"
2) "99"
3) "jack"
4) "90"
5) "linda"
6) "85"
7) "eagle"
8) "80"
取得sorted set中member的个数.
127.0.0.1:6379> zadd engtest 90 jack 85 linda
(integer) 2
127.0.0.1:6379> zadd engtest 99 doris 80 eagle
(integer) 2
127.0.0.1:6379> zrange engtest 0 -1
1) "eagle"
2) "linda"
3) "jack"
4) "doris"
127.0.0.1:6379> zcard engtest
(integer) 4
取得sorted set中score符合范围内的member总数.
127.0.0.1:6379> zadd engtest 90 jack 85 linda
(integer) 2
127.0.0.1:6379> zadd engtest 99 doris 80 eagle
(integer) 2
127.0.0.1:6379> zrange engtest 0 -1
1) "eagle"
2) "linda"
3) "jack"
4) "doris"
# 取得engtest中member score在80 ~ 90 的总数
127.0.0.1:6379> zcount engtest 80 90
(integer) 3
取得sorted set中member的value字串在范围的个数.
127.0.0.1:6379> zadd mytest 0 a 0 b 0 c 0 d 0 e 0 f 0 g 0 h 0 i
(integer) 9
127.0.0.1:6379> zrangebylex mytest - +
1) "a"
2) "b"
3) "c"
4) "d"
5) "e"
6) "f"
7) "g"
8) "h"
9) "i"
# 取的mytest中member的value字串在 -无限大 到 +无限大 范围内的个数
127.0.0.1:6379> zlexcount mytest - +
(integer) 9
# 取的mytest中member的value字串在 包含c 到 包含g 范围内的个数
127.0.0.1:6379> zlexcount mytest [c [g
(integer) 5
取得sorted set中指定member的正向排序.
127.0.0.1:6379> zadd engtest 90 jack 85 linda
(integer) 2
127.0.0.1:6379> zadd engtest 99 doris 80 eagle
(integer) 2
127.0.0.1:6379> zrange engtest 0 -1
1) "eagle"
2) "linda"
3) "jack"
4) "doris"
127.0.0.1:6379> zrank engtest eagle
(integer) 0
127.0.0.1:6379> zrank engtest linda
(integer) 1
取得sorted set中指定member的反向排序.
127.0.0.1:6379> zadd engtest 90 jack 85 linda
(integer) 2
127.0.0.1:6379> zadd engtest 99 doris 80 eagle
(integer) 2
127.0.0.1:6379> zrevrange engtest 0 -1
1) "doris"
2) "jack"
3) "linda"
4) "eagle"
127.0.0.1:6379> zrevrank engtest eagle
(integer) 3
127.0.0.1:6379> zrevrank engtest linda
(integer) 2
取得sorted set中指定member的score.
127.0.0.1:6379> zadd engtest 90 jack 85 linda
(integer) 2
127.0.0.1:6379> zadd engtest 99 doris 80 eagle
(integer) 2
127.0.0.1:6379> zrange engtest 0 -1
1) "eagle"
2) "linda"
3) "jack"
4) "doris"
# 取得engtest中eagle的score
127.0.0.1:6379> zscore engtest eagle
"80"
设定sorted set中指定member的score增加.
127.0.0.1:6379> zadd engtest 90 jack 85 linda
(integer) 2
127.0.0.1:6379> zadd engtest 99 doris 80 eagle
(integer) 2
127.0.0.1:6379> zrange engtest 0 -1 withscores
1) "eagle"
2) "80"
3) "linda"
4) "85"
5) "jack"
6) "90"
7) "doris"
8) "99"
# 将engtest中member linda的score加6
127.0.0.1:6379> zincrby engtest 6 linda
"91"
127.0.0.1:6379> zrange engtest 0 -1 withscores
1) "eagle"
2) "80"
3) "jack"
4) "90"
5) "linda"
6) "91"
7) "doris"
8) "99"
取得sorted set 中member的score正向排序在指定范围内.
127.0.0.1:6379> zadd engtest 90 jack 85 linda 99 doris 80 eagle
(integer) 4
# 取得engtest中member的score正向排序在 90 ~ 100
127.0.0.1:6379> zrangebyscore engtest 90 100
1) "jack"
2) "doris"
取得sorted set 中member的score反向排序在指定范围内.
127.0.0.1:6379> zadd engtest 90 jack 85 linda 99 doris 80 eagle
(integer) 4
# 取得engtest中member的score反向排序在 90 ~ 100
127.0.0.1:6379> zrevrangebyscore engtest 90 100
(empty array)
# 取得engtest中member的score反向排序在 100 ~ 90
127.0.0.1:6379> zrevrangebyscore engtest 100 90
1) "doris"
2) "jack"
# 取得engtest中member的score反向排序在 -无限大 ~ +无限大 = 所有 取2个
127.0.0.1:6379> zrevrangebyscore engtest -inf +inf limit 0 2
(empty array)
# 取得engtest中member的score反向排序在 +无限大 ~ -无限大 =所有 取2个
127.0.0.1:6379> zrevrangebyscore engtest +inf -inf limit 0 2
1) "doris"
2) "jack"
取得sorted set 中membe的value字母正向排序在指定范围内.
127.0.0.1:6379> zadd engtest 90 jack 85 linda 99 doris 80 eagle
(integer) 4
127.0.0.1:6379> zrangebylex engtest - +
1) "eagle"
2) "linda"
3) "jack"
4) "doris"
127.0.0.1:6379> zadd mytest 0 a 0 b 0 c 0 d 0 e 0 f 0 g 0 h 0 i
(integer) 9
# 取得mytest中member的value范围 -无限大到包含d
127.0.0.1:6379> zrangebylex mytest - [d
1) "a"
2) "b"
3) "c"
4) "d"
# 取得mytest中member的value范围 -无限大到不包含d
127.0.0.1:6379> zrangebylex mytest - (d
1) "a"
2) "b"
3) "c"
# 取得mytest中member的value范围 包含b到不包含h
127.0.0.1:6379> zrangebylex mytest [b (h
1) "b"
2) "c"
3) "d"
4) "e"
5) "f"
6) "g"
删除sorted test中指定member.
127.0.0.1:6379> zadd engtest 90 jack 85 linda 99 doris 80 eagle
(integer) 4
127.0.0.1:6379> zrange engtest 0 -1
1) "eagle"
2) "linda"
3) "jack"
4) "doris"
# 删除engtest中member是eagle
127.0.0.1:6379> zrem engtest eagle
(integer) 1
127.0.0.1:6379> zrange engtest 0 -1
1) "jack"
2) "linda"
3) "doris"
删除sorted test中member的score反向排序在指定范围内.
127.0.0.1:6379> zadd engtest 90 jack 85 linda 99 doris 80 eagle
(integer) 4
# 删除engtest中member的score在 0 ~ 90
127.0.0.1:6379> zremrangebyscore engtest 0 90
(integer) 3
127.0.0.1:6379> zrange engtest 0 -1
1) "doris"
删除sorted set中member的value字母正向排序在指定范围内.
127.0.0.1:6379> zadd engtest 90 jack 85 linda 99 doris 80 eagle
(integer) 4
# 删除engtest中member的value字母在所有范围内的
127.0.0.1:6379> zremrangebylex engtest - +
(integer) 4
127.0.0.1:6379> zadd mytest 0 a 0 b 0 c 0 d 0 e 0 f 0 g 0 h 0 i
(integer) 9
# 删除engtest中member的value字母在 -无限大 到 包含d 范围内的
127.0.0.1:6379> zremrangebylex mytest - [d
(integer) 4
127.0.0.1:6379> zrange mytest 0 -1
1) "e"
2) "f"
3) "g"
4) "h"
5) "i"
删除sorted set中正向排序後指定范围的member.
127.0.0.1:6379> zadd engtest 90 jack 85 linda 99 doris 80 eagle
(integer) 4
127.0.0.1:6379> zrange engtest 0 -1
1) "eagle"
2) "linda"
3) "jack"
4) "doris"
# 删除engtest中正向排序 0 ~ 2 的member
127.0.0.1:6379> zremrangebyrank engtest 0 2
(integer) 3
127.0.0.1:6379> zrange engtest 0 -1
1) "doris"
扫描sorted set中指定member 特定match pattern与次数.
127.0.0.1:6379> zadd engtest 90 jack 85 linda 99 doris 80 eagle
(integer) 4
127.0.0.1:6379> zrange engtest 0 -1
1) "eagle"
2) "linda"
3) "jack"
4) "doris"
127.0.0.1:6379> zscan engtest 0 match e*
1) "0"
2) 1) "eagle"
2) "80"
取得多个sorted set中member的交集,并存入另外一个sorted set中,可加入weights进行加乘.
127.0.0.1:6379> zadd mytest1 1 a 2 b 3 c
(integer) 3
127.0.0.1:6379> zadd mytest2 5 a 7 b 3 c
(integer) 3
127.0.0.1:6379> zrange mytest1 0 -1 withscores
1) "a"
2) "1"
3) "b"
4) "2"
5) "c"
6) "3"
127.0.0.1:6379> zrange mytest2 0 -1 withscores
1) "c"
2) "3"
3) "a"
4) "5"
5) "b"
6) "7"
# 将mytest1与mytest2中交集的member进行weights後写入到mytest3
127.0.0.1:6379> zunionstore mytest3 2 mytest1 mytest2 weights 2 3
(integer) 3
127.0.0.1:6379> zrange mytest3 0 -1 withscores
1) "c"
2) "15"
3) "a"
4) "17"
5) "b"
6) "25"
取得多个sorted set中member的联集,并存入另外一个sorted set中.
127.0.0.1:6379> zadd mytest1 1 a 2 b 3 c
(integer) 3
127.0.0.1:6379> zadd mytest2 5 a 7 b 3 c
(integer) 3
127.0.0.1:6379> zrange mytest1 0 -1 withscores
1) "a"
2) "1"
3) "b"
4) "2"
5) "c"
6) "3"
127.0.0.1:6379> zrange mytest2 0 -1 withscores
1) "c"
2) "3"
3) "a"
4) "5"
5) "b"
6) "7"
# 将mytest1与mytest2中联集的member後写入到mytest4
127.0.0.1:6379> zinterstore mytest4 2 mytest1 mytest2
(integer) 3
127.0.0.1:6379> zrange mytest4 0 -1 withscores
1) "a"
2) "6"
3) "c"
4) "6"
5) "b"
6) "9"
<<: Strengths based management
ㄧ、资料前处理 1. 补值、删值 前面我们透过视觉化的方式找到资料有缺值,因此我们要将资料进行补值。...
表格标签主要用来显示以及展示数据,可用表格标签排版後让数据更容易阅读 1. 表格基础标签简易介绍 (...
不管是在哪开始学习写程序,都一定会看到最经典的流程图: 至今,流程图的正确画法也不是那麽容易被在乎,...
教授说12点前要看到实验结果,但我组长看我不先发文,也想把我杀了,人真难做,我只好先来发文QQ 心得...
虚设常式(Stub)简介 今天的文章进入了新的系列,那因为接下来的概念是非常抽象的,所以会介绍数个核...