Redis 有序集合 ZINTERSTORE 用法
Redis 有序集合 ZINTERSTORE 用法
用法样例:
假设有个博客系统,开发者把有关编程的书都放在了 tag_programming 集合中,把系统中每本书 按评分放成一个 score_books 有序集合中,现在要对编程有关的书做一个按评分排序的小排行榜,这时就可以用 ZINTERSTORE 来轻松实现了。
SADD tag_programming "Redis 设计与实现"
SADD tag_programming "Effctive Java"
SADD tag_programming "Mysql 技术内幕:SQL 编程"
ZADD score_books 4.8 "Redis 设计与实现"
ZADD score_books 4.2 "Effctive Java
ZADD score_books 5.0 "Mysql 技术内幕:SQL 编程"
ZADD score_books 5.0 "三体3:死神永生"
ZINTERSTORE programming_rate 2 tag_programming score_books WEIGHTS 0 1
解释:
- programming_rate 代表结果集,ZINTERSTORE 执行后会得到一个有序集合,而 programming_rate 就是这个有序集合的名称,随后可以用 ZRANGE programming_rate 0 -1 来输出结果
- 紧随 programming_rate 后的
2是指定有多少个集合将进行交集运算 2后面就是参与交集运算的集合的 key ,数量要和声明的数量相等- WEIGHTS 是一个可选参数,另一个参数是 AGGREGATE
- WEIGTHS 字面意思是权值,集合参与运算前会把自己的 score(普通集合没有 score 所以它的 score 默认为1) 与权值相乘,最后各集合的运算结果相加,得到结果集中的新的 score
- AGGREAGE 提供了三个聚集函数(和 MySQL 中的聚集函数类似): sum,min,max