加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

Java架构之Redis系列:通过文章点赞排名案例学习Sortedset命令

发布时间:2019-08-31 10:18:25 所属栏目:建站 来源:老詹啊
导读:前言 这一篇文章将讲述Redis中的sortedset类型命令,同样也是通过demo来讲述,其他部分这里就不在赘述了。 案例 demo功能是文章点赞排名等等,整个demo的大致页面如下。 准备工作 首先定义一个存储文章的key privatestaticfinalStringZSET_KEY=articleList

redis客户端执行的命令如下

  1. ZADD zRemKey 1 "one" 2 "two" 3 "three" 
  2.  
  3. ZREM zRemKey one 
  4.  
  5. ZRANGE zRemKey 0 -1 

执行结果如下

Java架构之redis系列:通过文章点赞排名案例学习sortedset命令

下面是java代码

  1. @Test 
  2.  
  3. public void zRem() { 
  4.  
  5. zSetOperations.add("zRemKey", "one", 1); 
  6.  
  7. zSetOperations.add("zRemKey", "two", 2); 
  8.  
  9. zSetOperations.add("zRemKey", "three", 3); 
  10.  
  11. //jedis.zrem("zRemKey", "one"); 
  12.  
  13. zSetOperations.remove("zRemKey", "one"); 
  14.  
  15. System.out.println(zSetOperations.range("zRemKey", 0 , -1)); 
  16.  

交并集

Java架构之redis系列:通过文章点赞排名案例学习sortedset命令

ZINTERSTORE命令

计算给定的numkeys个有序集合的交集,并且把结果放到destination中。

在给定要计算的key和其它参数之前,必须先给定key个数(numberkeys)。

默认情况下,结果中一个元素的分数是有序集合中该元素分数之和,前提是该元素在这些有序集合中都存在。因为交集要求其成员必须是给定的每个有序集合中的成员,结果集中的每个元素的分数和输入的有序集合个数相等。

对于WEIGHTS和AGGREGATE参数的描述,参见命令ZUNIONSTORE。

如果destination存在,就把它覆盖。

ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]

返回值:结果有序集合destination中元素个数。

redis客户端执行的命令如下

  1. ZADD zInterStoreKey1 1 "one" 2 "two" 
  2.  
  3. ZADD zInterStoreKey2 1 "one" 2 "two" 3 "three" 
  4.  
  5. ZINTERSTORE zInterStoreSumResult 2 zInterStoreKey1 zInterStoreKey2 WEIGHTS 2 3 
  6.  
  7. ZRANGE zInterStoreSumResult 0 -1 WITHSCORES 

执行结果如下

Java架构之redis系列:通过文章点赞排名案例学习sortedset命令

下面是java代码

  1. @Test 
  2.  
  3. public void zInterStore() { 
  4.  
  5. zSetOperations.add("zInterStoreKey1", "one", 1); 
  6.  
  7. zSetOperations.add("zInterStoreKey1", "two", 2); 
  8.  
  9. zSetOperations.add("zInterStoreKey2", "one", 1); 
  10.  
  11. zSetOperations.add("zInterStoreKey2", "two", 2); 
  12.  
  13. zSetOperations.add("zInterStoreKey2", "three", 3); 
  14.  
  15. ZParams zParams = new ZParams(); 
  16.  
  17. zParams.weightsByDouble(2, 3); 
  18.  
  19. zParams.aggregate(ZParams.Aggregate.SUM); 
  20.  
  21. jedis.zinterstore("zInterStoreSumResult", zParams, "zInterStoreKey1", "zInterStoreKey2"); 
  22.  
  23. printTuple("zInterStoreSumResult", jedis.zrangeWithScores("zInterStoreSumResult", 0, -1)); 
  24.  

ZUNIONSTORE命令

计算给定的numkeys个有序集合的并集,并且把结果放到destination中。

WEIGHTS参数相当于权重,默认就是1,可以给不同的key设置不同的权重

AGGREGATE参数默认使用的参数SUM,还可以选择MIN或者MAX。这个参数决定结果集的score是取给定集合中的相加值、最小值还是最大值

ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...] ] [AGGREGATE SUM|MIN|MAX]

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读