与set集合不同的是,zset是有序的

zadd

将一个或多个member元素及其score值加入到有序集合key当中

语法:zadd <key> <score1> <value1> <score2> <value2> ……

1
2
3
4
5
6
7
# 向top中添加以下三个元素
# value score
# c++ 100
# java 200
# javascript 150
127.0.0.1:6379> zadd top 100 c 200 java 150 javascript
(integer) 3

zrange

返回有序集合key中,下标在start和stop之间的元素(包括start和stop)

参数带withscores则表示将分数和值一起返回到结果集中

start=0,stop=-1表示取出zset集合中所有的元素

返回结果集为升序排序

语法:zrange <key> <start> <stop> [withscores]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 返回下标在0~1的元素
127.0.0.1:6379> zrange top 0 1
1) "c"
2) "javascript"
# 返回下标在1~2的元素
127.0.0.1:6379> zrange top 1 2
1) "javascript"
2) "java"
# 返回下标在0~2的元素
127.0.0.1:6379> zrange top 0 2
1) "c"
2) "javascript"
3) "java"
# 返回所有元素,包括score
127.0.0.1:6379> zrange top 0 -1 withscores
1) "c"
2) "100"
3) "javascript"
4) "150"
5) "java"
6) "200"

zrangebyscore

取出zset中score在min和max之间的元素(包括score等于min和max的元素)

参数带withscores则表示将分数和值一起返回到结果集中

结果集为升序排序

语法:zrangebyscore key min max [withscores]

1
2
3
4
5
6
7
8
9
10
11
# 取出score在[100,200]的元素
127.0.0.1:6379> zrangebyscore top 100 200
1) "c"
2) "javascript"
3) "java"
# 取出score在[150,200]的元素,参数带withscores
127.0.0.1:6379> zrangebyscore top 150 200 withscores
1) "javascript"
2) "150"
3) "java"
4) "200"

zrevrange

返回有序集合key中,下标在start和stop之间的元素(包括start和stop)

参数带withscores则表示将分数和值一起返回到结果集中

start=0,stop=-1表示取出zset集合中所有的元素

返回结果集为降序排序

语法:zrevrange <key> <start> <stop> [withscores]

1
2
3
4
5
6
7
8
9
10
11
12
13
# 返回top集合中的所有元素
127.0.0.1:6379> zrevrange top 0 -1
1) "java"
2) "javascript"
3) "c"
# 带结果集
127.0.0.1:6379> zrevrange top 0 -1 withscores
1) "java"
2) "200"
3) "javascript"
4) "150"
5) "c"
6) "100"

zrevrangbyscore

取出zset中score在min和max之间的元素(包括score等于min和max的元素)

参数带withscores则表示将分数和值一起返回到结果集中

结果集为降序排序

语法:zrevrangebyscore key max min [withscores]

注意min和max的位置

1
2
3
4
5
6
7
8
9
10
11
12
# 取出score在[100,200]的元素
127.0.0.1:6379> zrevrangebyscore top 200 100
127.0.0.1:6379> zrevrangebyscore top 200 100
1) "java"
2) "javascript"
3) "c"
# 取出score在[150,200]的元素,参数带withscores
127.0.0.1:6379> zrevrangebyscore top 200 150 withscores
1) "java"
2) "200"
3) "javascript"
4) "150"

zincrby

为我们的元素value的score加上增量increment

语法:zincrby <key> <increment> <value>

1
2
3
# 为java的score加上增量100
127.0.0.1:6379> zincrby top 100 java
"300"

zrem

删除指定zset集合下,指定值value的元素

语法:zrem <key> <value>

1
2
3
4
5
6
7
#删除top中的java
127.0.0.1:6379> zrem top java
(integer) 1
# 查看该zset集合的所有值
127.0.0.1:6379> zrange top 0 -1
1) "c"
2) "javascript"

zrank

返回值value在集合zset中的排名,从0开始

语法:zrank <key> <value>

1
2
3
4
5
6
# 返回c在top中的排名
127.0.0.1:6379> zrank top c
(integer) 0
# 返回javascript在top中的排名
127.0.0.1:6379> zrank top javascript
(integer) 1