Zinterstore 命令
先来看一下这个命令的定义:
Redis Zinterstore 命令计算给定的一个或多个有序集的交集,其中给定 key 的数量必须以 numkeys 参数指定,并将该交集(结果集)储存到 destination 。
默认情况下,结果集中某个成员的分数值是所有给定集下该成员分数值之和。
语法
redis Zinterstore 命令基本语法如下:
redis 127.0.0.1:6379> ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]
用大白话解释的话就是,首先这个命令是用来合并多个(也可以是两个)集合中共同拥有的key的值用的.
实例:
#创建一个数学成绩的有序集合,有三个学生 张三、李四、王五 127.0.0.1:6379> zadd math_score 50 'zhang san' 95 'lisi' 78 'wangwu' (integer) 3 #按照升序查看结果集 127.0.0.1:6379> zrangebyscore math_score 0 100 withscores 1) "zhang san" 2) "50" 3) "wangwu" 4) "78" 5) "lisi" 6) "95" #创建一个英语成绩的有序集合,里面有四个学生 张三、李四、王五、朱六 127.0.0.1:6379> zadd english_score 90 'zhang san' 50 'zhu liu' 75 'lisi' 80 'wangwu' (integer) 4 #按照升序查看结果集 127.0.0.1:6379> zrangebyscore english_score 0 100 1) "zhu liu" 2) "lisi" 3) "wangwu" 4) "zhang san" #如果加了 withscores 结果集里面会出现成绩 127.0.0.1:6379> zrangebyscore english_score 0 100 withscores 1) "zhu liu" 2) "50" 3) "lisi" 4) "75" 5) "wangwu" 6) "80" 7) "zhang san" 8) "90" #现在我们想查看两门功课学生的总分排序,结果保存在新的集合sum_score中, sum_score 后面的数字2 代表要合并几个集合,我们合并两个就写2. 127.0.0.1:6379> zinterstore sum_score 2 math_score english_score (integer) 3 #查看合并后的结果,我们发现并没有 朱六的成绩,因为朱六的信息只存在于 english_score中,Zinterstore 命令计算给定的一个或多个有序集的交集, 也就是集合中共同有有的值才会合并到新的结果集中. 127.0.0.1:6379> zrangebyscore sum_score 0 300 withscores 1) "zhang san" 2) "140" 3) "wangwu" 4) "158" 5) "lisi" 6) "170"
喜欢我的博客就请点赞+【关注】一波