上一篇介绍了redis的无序集合set,本篇介绍redis的有序集合sortedset。
和set集合类似,sortedset是有序的去重的,元素是字符串类型。
每一个元素都关联着一个浮点数分值(score),并按照分值从小到大的顺序排列集合中的元素,分值可以相同。
一个集合最多包含2的32次方减1个元素。
一个保存了水果价格的有序集合
分值 | 2.8 | 3.5 | 4.3 | 6.8 | 7.0 | 9.2 | 10.0 |
---|---|---|---|---|---|---|---|
元素 | 西瓜 | 香蕉 | 芒果 | 梨 | 葡萄 | 苹果 | 柚子 |
一个保存了书籍浏览量的集合(可以拓展很多的业务)
分值 | 250 | 350 | 950 | 1500 | 3000 |
---|---|---|---|---|---|
元素 | 设计模式 | 编程思想 | 虚拟机内核 | linux内核 | 算法导论 |
1.增加一个或多个元素
zadd key score member [score member …]
如果元素已存在则使用新的元素
2.移除一个或多个元素
zadd key member [member …]
元素如果不存在,自动忽略
3.查看元素的分值
zscore key member
4.增加分值
zincrby key increment member
5.返回元素的排名(索引)
zrank key member
6.返回元素的逆排名
zrevrank key member
7.返回指定索引区间的元素
zrange key start stop [0 -1查看所有的元素]
zrevrange key start stop
8.返回指定分值区间的元素
zrangebyscore key min max
9.移除指定排名范围内的元素
ZREMRANGEBYRANK key start stop
10.移除指定分值范围内的元素
ZREMRANGEBYSCORE key min max
11.返回集合中元素的个数
zcard key
12.返回指定范围内元素的个数
zcount key min max
13.并集
ZUNIONSTORE destination numkeys key [key …] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]
numkeys:指定key的数量,后面跟几个key就是几,必须
WEIGHTS:选项与前面指定的key对应,对应key中的每一个score都要乘以这个权重
AGGREGATE:指定并集的聚合方式
SUM:将所有集合中某一个元素的score值之和作为结果集中该成员的score值
MIN:将所有集合中某一个元素的score值最小值作为结果集中该成员的score值
MAX:将所有集合中某一个元素的score值最大值作为结果集中该成员的score值
这里实现了去重,zhangsan,lisi,zhaoliu
默认对元素的分数进行了相加
使用min,取最小元素放入到新的集合中
添加权重key1的所有分值乘以1,key2的所有分值乘以0.5,返回最小值
14.交集
ZINTERSTORE destination numkeys key [key …] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]
numkeys:指定key的数量,后面跟几个key就是几,必须
WEIGHTS:选项与前面指定的key对应,对应key中的每一个score都要乘以这个权重
AGGREGATE:指定并集的聚合方式
SUM:将所有集合中某一个元素的score值之和作为结果集中该成员的score值
MIN:将所有集合中某一个元素的score值最小值作为结果集中该成员的score值
MAX:将所有集合中某一个元素的score值最大值作为结果集中该成员的score值
找两个集合相同的元素存储到一个指定的集合中