redis数据操作----zset

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

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"

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值