zset
- sorted set,有序数据
- 元素为string类型
- 元素具备唯一性,不重复
- 每个元素都关联一个double类型的score,表示权重,通过权重将元素从小到大排列
- 元素的score可以相同
命令
- 添加
zadd key score member [score member ...]
例如:添加成员
127.0.0.1:6379> zadd z1 1 'jane' 2 'tony'
(integer) 2
例如:添加重复的成员
127.0.0.1:6379> zadd z1 3 'brown' 4 'walker' 5 'walker' 6 'walker'
(integer) 2
- 通过score返回有序集合指定区间内的成员(递增),[withscores]表示返回的集合是否显示score,-inf +inf表示区间无限
zrangebyscore key min max [withscores]
例如:求z1集合里的所有成员
127.0.0.1:6379> zrangebyscore z1 -inf +inf
1) "jane"
2) "tony"
3) "brown"
4) "walker"
127.0.0.1:6379> zrangebyscore z1 -inf +inf withscores
1) "jane"
2) "1"
3) "tony"
4) "2"
5) "brown"
6) "3"
7) "walker"
8) "6"
从结果可以看出来,实际只添加了2个元素,连续添加的2个walker元素添加无效
- 通过score返回有序集合指定区间内的成员(递减)
zrevrangebyscore key min max [withscores]
例如:求z1集合里的所有成员
127.0.0.1:6379> zrevrangebyscore z1 +inf -inf
1) "walker"
2) "brown"
3) "tony"
4) "jane"
127.0.0.1:6379> zrevrangebyscore z1 +inf -inf withscores
1) "walker"
2) "6"
3) "brown"
4) "3"
5) "tony"
6) "2"
7) "jane"
8) "1"
- 返回指定范围内的元素(递增)
zrange key start stop [withscores]
例如:求z1(0,-1) ,z1(1,2)
127.0.0.1:6379> zrange z1 0 -1
1) "jane"
2) "tony"
3) "brown"
4) "walker"
127.0.0.1:6379> zrange z1 0 -1 withscores
1) "jane"
2) "1"
3) "tony"
4) "2"
5) "brown"
6) "3"
7) "walker"
8) "6"
127.0.0.1:6379> zrange z1 1 2
1) "tony"
2) "brown"
127.0.0.1:6379> zrange z1 1 2 withscores
1) "tony"
2) "2"
3) "brown"
4) "3"
- 返回指定范围内的元素(递减)
zrevrange key start stop [withscores]
127.0.0.1:6379> zrevrange z1 0 -1
1) "walker"
2) "brown"
3) "tony"
4) "jane"
127.0.0.1:6379> zrevrange z1 0 -1 withscores
1) "walker"
2) "6"
3) "brown"
4) "3"
5) "tony"
6) "2"
7) "jane"
8) "1"
127.0.0.1:6379> zrevrange z1 1 2
1) "brown"
2) "tony"
127.0.0.1:6379> zrevrange z1 1 2 withscores
1) "brown"
2) "3"
3) "tony"
4) "2"
- 返回元素个数
zcard key
例如:求z1的元素个数
127.0.0.1:6379> zrange z1 0 -1
1) "jane"
2) "tony"
3) "brown"
4) "walker"
127.0.0.1:6379> zcard z1
(integer) 4
- 返回有序key中,score值在min和max之间元素
zcount key min max
例如:求z1的score值在0和4之间的元素,z1的score值在1和4之间的元素,z1的score值在1和6之间
127.0.0.1:6379> zrange z1 0 10 withscores
1) "jane"
2) "1"
3) "tony"
4) "2"
5) "brown"
6) "3"
7) "walker"
8) "6"
127.0.0.1:6379> zcount z1 0 4
(integer) 3
127.0.0.1:6379> zcount z1 1 4
(integer) 3
127.0.0.1:6379> zcount z1 1 6
(integer) 4
- 返回有序key中,成员member的score值
zscore key member
例如:求z1集合中成员jane的score值
127.0.0.1:6379> zscore z1 jane
"1"
实例:添加一个薪水的zset数据
127.0.0.1:6379> zadd salary 3000 jane 5000 tony 12000 brown 8000 walker
(integer) 4
127.0.0.1:6379> zadd salary 3000 tom
(integer) 1
127.0.0.1:6379> zrangebyscore salary -inf +inf withscores
1) "jane"
2) "3000"
3) "tom"
4) "3000"
5) "tony"
6) "5000"
7) "walker"
8) "8000"
9) "brown"
10) "12000"
例如:求薪水大于3000,等于8000的人
127.0.0.1:6379> zrangebyscore salary (3000 8000
1) "tony"
2) "walker"
127.0.0.1:6379> zrangebyscore salary (3000 8000 withscores
1) "tony"
2) "5000"
3) "walker"
4) "8000"
例如:求薪水大于3000,小于8000的人
127.0.0.1:6379> zrangebyscore salary (3000 (8000
1) "tony"
127.0.0.1:6379> zrangebyscore salary (3000 (8000 withscores
1) "tony"
2) "5000"

本文详细介绍了Redis中的有序集合Zset,包括其特性:元素唯一且与double类型的score关联,按score排序。文章列举了各种操作命令,如添加成员、按score区间获取成员、计数等,并通过实例展示了如何利用Zset进行特定查询,如查找薪水在特定范围内的员工。
4581

被折叠的 条评论
为什么被折叠?



