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

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

发布时间:2019-08-28 18:16:13 所属栏目:建站 来源:老詹啊
导读:媒介 这一篇文章将报告Redis中的sortedset范例呼吁,同样也是通过demo来报告,其他部门这里就不在赘述了。 案例 demo成果是文章点赞排名等等,整个demo的大抵页面如下。 筹备事变 起首界说一个存储文章的key privatestaticfinalStringZSET_KEY=articleList
副问题[/!--empirenews.page--]

 媒介

这一篇文章将报告Redis中的sortedset范例呼吁,同样也是通过demo来报告,其他部门这里就不在赘述了。

Java架构之Redis系列:通过文章点赞排名案例进修Sortedset呼吁

案例

demo成果是文章点赞排名等等,整个demo的大抵页面如下。

Java架构之redis系列:通过文章点赞排名案例进修sortedset呼吁

筹备事变

起首界说一个存储文章的key

  1. private static final String ZSET_KEY = "articleList"; 

redis操纵工具

  1. private RedisTemplate redisTemplate; 
  2.  
  3. //string 呼吁操纵工具 
  4.  
  5. private ValueOperations valueOperations; 
  6.  
  7. //zset 呼吁操纵工具 
  8.  
  9. private ZSetOperations zSetOperations; 

sortedset在Redis中的布局可以看下图(图片来历于Redis in Action)。

Java架构之redis系列:通过文章点赞排名案例进修sortedset呼吁

列表查询

  1. @RequestMapping(value = "/getList/{sortType}", method = RequestMethod.GET) 
  2.  
  3. public Set getList(@PathVariable String sortType) { 
  4.  
  5. //假如没稀有据,则添加10条数据 
  6.  
  7. if (zSetOperations.size(ZSET_KEY) == 0){ 
  8.  
  9. for (int i = 1; i <= 10; i++) { 
  10.  
  11. zSetOperations.add(ZSET_KEY,"文章:"+i, (int)(Math.random()*10+i)); 
  12.  
  13.  
  14.  
  15. //ASC按照分数从小到大排序,DESC反之 
  16.  
  17. if ("ASC".equals(sortType)){ 
  18.  
  19. return zSetOperations.rangeWithScores(ZSET_KEY, 0, -1); 
  20.  
  21. } else { 
  22.  
  23. return zSetOperations.reverseRangeWithScores(ZSET_KEY, 0, -1); 
  24.  
  25.  

这里为了省去一个个添加数据的贫困,就在获取列表数据中加了个判定。当文章数据为0时,默认添加10条数据,配置随机score加上地址的索引。

然后按照url中的参数sortType来抉择返回的数据是凭证分数升序照旧降序排序。成果结果如下

Java架构之redis系列:通过文章点赞排名案例进修sortedset呼吁

呼吁先容

Java架构之redis系列:通过文章点赞排名案例进修sortedset呼吁

赞或踩

java代码如下

  1. @RequestMapping(value = "/star", method = RequestMethod.POST) 
  2.  
  3. public boolean starOrUnStar(String member, String type) { 
  4.  
  5. if ("UP".equals(type)){ 
  6.  
  7. zSetOperations.incrementScore(ZSET_KEY, member, 1); 
  8.  
  9. } else { 
  10.  
  11. zSetOperations.incrementScore(ZSET_KEY, member, -1); 
  12.  
  13.  
  14. return true; 
  15.  

按照type抉择是否加减分数,当type为UP时暗示赞,为其他(DOWN)时暗示踩。成果结果如下

Java架构之redis系列:通过文章点赞排名案例进修sortedset呼吁

呼吁先容

Java架构之redis系列:通过文章点赞排名案例进修sortedset呼吁

起落序排名

java代码如下

  1. @RequestMapping(value = "/rank/{type}/{member}", method = RequestMethod.GET) 
  2.  
  3. public Long rank(@PathVariable String member, @PathVariable String type) { 
  4.  
  5. Long rank = null; 
  6.  
  7. if ("ASC".equals(type)){ 
  8.  
  9. rank = zSetOperations.rank(ZSET_KEY, member); 
  10.  
  11. } else { 
  12.  
  13. rank = zSetOperations.reverseRank(ZSET_KEY, member); 
  14.  
  15.  
  16. return rank; 
  17.  

(编辑:湖南网)

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

热点阅读