一.有序set集合简述

  • 让本来无序set集合有序起来
  • 有序set集合特点:有序,不重复

我们光set集合中如果存储元素就直接

小明,小红,小张

有序set集合则是每个元素都需要手动赋予一个分数

5000 小明,1000 小红,500 小张

而有序set集合默认是从小到大排序

我们发现当集合倒序时就像是一个排行榜

5000 小明
1000 小红
500 小张

所以有序set常常用来做排行榜

二.有序set集合常用命令

1.赋值

zadd key score member score2 member2 …:将所有成员以及该成员的分数存放到sorted-set中。如果该元素已经存在则会用新的分数替换原有的分数。返回值是新加入到集合中的元素个数,不包含之前已经存在的元素。

set 有序 java 有序的set集合_倒序

当前有序set集合

key  value
set1  [500 xiaozhang 1000 xiaohong 5000 xiaoming]

2.查看

zscore key member:返回指定成员的分数
zcard key:获取集合中的成员数量

set 有序 java 有序的set集合_set 有序 java_02

3.删值

zrem key member[member…]:移除集合中指定的成员,可以指定多个成员

set 有序 java 有序的set集合_redis_03

三.有序set集合扩展命令

1.范围查询

zrange key start end[withscores]:获取集合中脚标为start-end的成员,[withscores]参数表明返回的成员包含其分数,这是分数从小到大排列
zrevrange key start end[withscores]:获取集合中脚标为start-end的成员,[withscores]参数表明返回的成员包含其分数,这是分数从大到小排列,即倒序

set 有序 java 有序的set集合_倒序_04

2.按排名范围删值

zremrangebyrank key start stop:按照排名范围删除元素

set 有序 java 有序的set集合_redis_05

3.按分数范围删值

zremrangebyscore key min max:按照分数范围删除元素

set 有序 java 有序的set集合_redis_06

4.查值

zrangebyscore key min max [withscores] [limit offset count]:返回分数在[min,max]的成员并按照分数从低到高排序 [withscores]:显示分数;[limit offset count]:offset,表明从脚标为offset的元素开始并返回count个成员

set 有序 java 有序的set集合_有序set_07

set 有序 java 有序的set集合_删除元素_08

5.变化分数

zincrby key increment member:设置指定成员的增加的分数,返回值是更改后的分数

set 有序 java 有序的set集合_set 有序 java_09

6.获取分数区间成员

zcount key min max:获取分数在[min,max]之间的成员

set 有序 java 有序的set集合_redis_10

7.返回集合中的排名

(1).从小到大排列的排名
zrank key member:返回成员在集合中的排名。索引(从小到大)

set 有序 java 有序的set集合_有序set_11

(2).从大到小排列的排名
zrevrank key member:返回成员在集合中的排名。索引(从大到小)

set 有序 java 有序的set集合_set 有序 java_12

总结:操作有序set集合都是操纵排行榜