Redis学习笔记(五)--order set结构及命令详解

order set 有序集合

因为原来是无需的,那么怎么变有序呢?我们就需要一个有序因子(例如:年龄,身高等)我们把这个因子叫score

下面来看有序集合的命令,注意与set的区别:set

------有序集合的增删差

1.zadd key score1 value1 score2 value2     ...添加元素

2.zrange key start stop [withscores] 把集合排序后返回名次[start, stop]的元素,withscores:是把score也打印出来

3.zrangbyscore key min max [withscores] limit offset N

集合(升序)排序后取出score在[min, max]内的元素,并跳过offset个,取出N个

4.zrank key member 查询member的排名(升序0名开始)

5.zrevrank key member 查询member的排名(降序0名开始)

6.zrem key value1 value2...删除集合中的元素。

7.zremrangebysocre key min max 按照score来删除[min, max]之间的元素

8.zremrangebyrank key start stop 按照排名删除[start, stop]之间的元素

--------有序集合的统计:

1.zcard key 返回元素个数

2.zcount key min max 返回[min, max]集合中元素的个数

-------有序集合的运算:

zinterstore destination numkeys key1 [key2 ...]

[WEIGHTS weight [weight....]]

[AGGREGATE SUM|MIN|MAX]

求key1, key2的交集,key1, key2的权重分别是weight1, weight2

聚合方法用:sum min max

聚合的结果保存在dest集合中

(求几个集合的交集,完了还可能要求交集的最大值最小值或者和)。

注意:weights aggregate 如何理解?

答:如果有交集,交集元素又有score , score怎么处理?

aggregate  sum->score相加, min求最小score, max求最大score

另:可以通过weight设置不同key的权重, 交集时score*weights


比如 :两个人卖宠物

李四:2 cat 3 dog 5 monkey

王五:3 cat 4 dog 6 monkey

1.zinterstore result 2 李四 王五 aggregate sum|min|max

这就会得出这两个人卖的相同的宠物且求出对应的和|最小|最大

2.加上权重就好像宠物的品种不同

zinterstore result 2 李四 王五 2 1 aggregate sum|min|max

这里看sum 就会得出cat 7   dog 10 monkey 16 为什么呢?

因为加入了权重,李四的宠物一只顶2*score 只。    


与其相反的求并集的就是zunionstore用法同上。

你可能感兴趣的:(Redis学习笔记(五)--order set结构及命令详解)