锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

Redis基本类型-有序集合Zset

时间:2023-07-03 13:07:00 lmp331液压变送器

有序集合Zset:在set在此基础上,加一个score值。之前setk1 v1 v2 v3,现在zset k1 score1 v1 score2 v2

#============================

# zadd 在有序集中添加一个或多个成员元素及其分数值

# zrange 返回有序集中 指定区间内的成员

#============================

127.0.0.1:6379> zadd myset 1 one
(integer) 1
127.0.0.1:6379> zadd myset 2 two 3 three
(integer) 2
127.0.0.1:6379> zrange myset 0 -1
1) "one"
2) "two"
3) "three"

#============================

# zrangebyscore 返回有序集合中指定分数范围的成员列表 有序集成员按分数增加(从小到大)顺序排列

#============================

127.0.0.1:6379> zadd salary 2500 lmp
(integer) 1

127.0.0.1:6379> zadd salary 500 hyd
(integer) 1
127.0.0.1:6379> zadd salary 5000 wyt
(integer) 1

#inf无穷大 同样 -inf 无穷小
127.0.0.1:6379> zrangebyscore salary -inf inf #显示整个有序集
1) "hyd"
2) "lmp"
3) "wyt"
127.0.0.1:6379> zrangebyscore salary -inf inf withscores #递增排列
1) "hyd"
2) "500"
3) "lmp"
4) "500"
5) "wyt"
6) "5000"

127.0.0.1:6379> zrangebyscore salary -inf 2500 withscores #显示工资 <=2500的所有成员
1) "hyd"
2) "500"
3) "lmp"
4) "500"

#============================

# zrem 移除一个或多个有序集中的成员

#============================

127.0.0.1:6379> zrange salary 0 -1
1) "hyd"
2) "lmp"
3) "wyt"
127.0.0.1:6379> zrem salary hyd
(integer) 1
127.0.0.1:6379> zrange salary 0 -1
1) "lmp"
2) "wyt"

#============================

# zcard计算集合元素数量的命令

#============================

127.0.0.1:6379> zcard salary
(integer) 2

#============================

# zcount在有序集合中计算指定分数范围的成员数量

#============================

127.0.0.1:6379> zadd myset 1 wyt
(integer) 1
127.0.0.1:6379> zadd myset 2 lmp 3 hyd
(integer) 2
127.0.0.1:6379> zcount myset 1 3
(integer) 3
127.0.0.1:6379> zcount myset 1 2
(integer) 2

#============================

# zrank 返回有序集合中指定成员的排名,其中有序集成员按分数(从小到大)的顺序排列

#============================

127.0.0.1:6379> zadd salary 2500 hyd
(integer) 1
127.0.0.1:6379> zadd salary 5000 wyt
(integer) 1
127.0.0.1:6379> zadd salary 500 lmp
(integer) 1
127.0.0.1:6379> zrange salary 0 -1 withscores #展示所有成员及其score值
1) "lmp"
2) "500"
3) "hyd"
4) "2500"
5) "wyt"
6) "5000"
127.0.0.1:6379> zrank salary wyt

(integer) 2
127.0.0.1:6379> zrank salary lmp
(integer) 0

#============================

# zrevrank 返回有序集中成员的排名 有序集成员按分数(从大到小)排序

#============================

127.0.0.1:6379> zrevrank salary lmp #lmp第三
(integer) 2
127.0.0.1:6379> zrevrank salary wyt #wyt第一
(integer) 0

h2>总结:
set 相比, sorted set 增加了一个权重参数 score ,使得集合中的元素能够按 score 进行有序排列,比如 一个存储全班同学成绩的sorted set ,其集合 value 可以是同学的学号,而 score 就可以是其考试得分, 这样在数据插入集合的时候,就已经进行了天然的排序。可以用sorted set 来做带权重的队列,比如普通消息的score 1 ,重要消息的 score 2 ,然后工作线程可以选择按 score 的倒序来获取工作任务。让 重要的任务优先执行。
排行榜应用,取 TOP N 操作 !
锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章