Redis五种数据类型之 Zset 类型
ZSets类型是一种有序集合,在set基础上添加顺序属性,添加元素时指定顺序,每次指定后zset会自动重新按照顺序将值重新调整顺序,可以理解为两列mysql表,一列存value一列存顺序key。
下面切入正题咯:
常用命令总结(自用总结 不喜勿喷):
示意图
| value | order |
| harbor | 1 |
| chung | 2 |
取1时得到harbor
取2时得到值chung
1.zadd方法
添加一个新元素
eg:
127.0.0.1:6379> zadd zset 1 “harbor"
(integer) 1
127.0.0.1:6379> zadd zset 2 "harborChung"
(integer) 1
2.zrange方法
取元素 0代表索引起始位置 -1代表所以结束为止 可选命令 withscores输出顺序号
eg:
127.0.0.1:6379> zrange zset 0 -1 withscores
1) "harbor"
2) "1"
3) "harborChung"
4) “2"
3.zrem方法
删除名称为key的zset中的元素member,返回值1代表成功,0代表失败.
eg:
127.0.0.1:6379> zrem zset aa
(integer) 0
127.0.0.1:6379> zrem zset "harbor"
(integer) 1
127.0.0.1:6379> zrange zset 0 -1 withscores
1) "harborChung"
2) “2"
4.zincrby方法
以指定值增加相应key中的顺序
如果在名称为key的zset中已存在member,则将此元素的次序增加指定值,否则向该集合添加此元素并使其顺序值为指定值。返回值为该元素的顺序值
eg:
127.0.0.1:6379> zincrby zset 10 "harbor"
"10"
127.0.0.1:6379> zrange zset 0 -1 withscores
1) "harborChung"
2) "2"
3) "harbor"
4) “11"
不存在该元素情况:
127.0.0.1:6379> zincrby zset 11 "harbor"
"21"
127.0.0.1:6379> zincrby zset 11 "harborZZZ"
"11"
127.0.0.1:6379> zrange zset 0 -1 withscores
1) "harborChung"
2) "2"
3) "harborZZZ"
4) "11"
5) "harbor"
6) “21"
5.zrank方法
返回名称为key的zset中的member元素排名(索引)按下标排序 从小到大
eg:
127.0.0.1:6379> zrange zset 0 -1 withscores
1) "harborChung"
2) "2"
3) "harborZZZ"
4) "11"
5) "harbor"
6) "21"
127.0.0.1:6379> zrank zset "harbor"
(integer) 2
127.0.0.1:6379> zrank zset "harborChung"
(integer) 0
127.0.0.1:6379> zrank zset "harborZZZ"
(integer) 1
6.zrevrank方法
返回名称为key的zset中的member元素排名(索引)按下标排序 从大到小
eg:
127.0.0.1:6379> zrevrank zset "harborChung"
(integer) 2
127.0.0.1:6379> zrevrank zset "harbor"
(integer) 0
127.0.0.1:6379> zrevrank zset "harborZZZ"
(integer) 1
127.0.0.1:6379> zrange zset 0 -1 withscores
1) "harborChung"
2) "2"
3) "harborZZZ"
4) "11"
5) "harbor"
6) “21"
7.zrevrange方法
按照顺序反向(降序)排序
与Zrange对比:
eg:
127.0.0.1:6379> zrange zset 0 -1 withscores
1) "harborChung"
2) "2"
3) "harborZZZ"
4) "11"
5) "harbor"
6) "21"
127.0.0.1:6379> zrevrange zset 0 -1 withscores
1) "harbor"
2) "21"
3) "harborZZZ"
4) "11"
5) "harborChung"
6) "2"
8.zrangebyscore方法
查找给定顺序范围内的元素并返回这些元素 给定范围构成的闭集合 如2 11则返回序号2(包括2)到序号11的这些元素(包括11).
eg:
127.0.0.1:6379> zrangebyscore zset 2 15 withscores
1) "harborChung"
2) "2"
3) "harborZZZ"
4) “11"
9.zcount方法
返回集合中score在给定区间的数量
eg:
127.0.0.1:6379> zcount zset 2 11
(integer) 2
10. zcard方法
返回该集合中的所有元素个数
eg:
127.0.0.1:6379> zcard zset
(integer) 3
127.0.0.1:6379> zrange zset 0 -1 withscores
1) "harborChung"
2) "2"
3) "harborZZZ"
4) "11"
5) "harbor"
6) "21"
11.zremrangebyrank方法
按下标升序排序后删除给定区间内的元素
(删除集合中索引在给定区间的元素)
输入参数为给定区间范围 含义为索引
eg:
—删除索引为1 2 的元素
127.0.0.1:6379> zrange zset 0 -1 withscores
1) "harborChung"
2) "2"
3) "harborZZZ"
4) "11"
5) "harbor"
6) "21"
127.0.0.1:6379> zremrangebyrank zset 1 2
(integer) 2
127.0.0.1:6379> zrange zset 0 -1 withscores
1) "harborChung"
2) "2"
—删除所有元素
127.0.0.1:6379> zremrangebyrank zset 0 -1
(integer) 1
127.0.0.1:6379> zrange zset 0 -1 withscores
(empty list or set)
12.zremrangebyscore方法
按下标升序排序后删除给定区间内的元素
(删除集合中序号在给定区间的元素)
输入参数为给定区间范围 含义为序号
eg:
127.0.0.1:6379> zrange zset 0 -1 withscores
1) "harbor"
2) "1"
3) "harborChung"
4) "2"
5) "ChungH"
6) "10"
7) "Chung"
8) "30"
9) "ZZZChung"
10) "32"
127.0.0.1:6379> zremrangebyscore zset 30 35
(integer) 2
127.0.0.1:6379> zrange zset 0 -1 withscores
1) "harbor"
2) "1"
3) "harborChung"
4) "2"
5) "ChungH"
6) “10"