热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

JavaRedis(一):实现文章点赞排名

开篇本篇用Redis实现文章的点赞,并由从点赞数有多到低排列。实现语言是JAVA,所以需要用的到包是jedis。本篇内容:介绍一下Redis.功能实现分析。功能实现。介绍一下Red
开篇
  • 本篇用Redis实现文章的点赞,并由从点赞数有多到低排列。
  • 实现语言是JAVA,所以需要用的到包是jedis。
  • 本篇内容:
    • 介绍一下Redis.
    • 功能实现分析。
    • 功能实现。

介绍一下Redis

  • Redis有5种数据类型(字符串String,哈希Hash,列表List,集合Set,有序列表Sort Set).
  • String字符串:存储基本的数据类型。 《Java Redis(一):实现文章点赞排名》 image.png

  • Hash哈希:键值对存储 《Java Redis(一):实现文章点赞排名》 image.png

  • List列表:列表包含的元素,相同元素可以重复出现。 《Java Redis(一):实现文章点赞排名》 image.png

  • Set集合:无序排列,不能重复。 《Java Redis(一):实现文章点赞排名》 image.png

  • Sort Set 有序列表:列表特性,按值排序。 《Java Redis(一):实现文章点赞排名》 image.png

功能分析。

  • 首先存储文章内容。因为一篇文章内容对应有title:标题,content:内容,time:时间 等数据,所以在5种类型中,用Hash存储是最合适的。

    《Java Redis(一):实现文章点赞排名》 image.png

ps: article:92617 可以看成是一个对象的变量名。

  • 然后实现文章点赞排名,需要注意的是:每篇文章所对应的点赞数,还有就是所有文章按照点赞数排序。所以用有序列表是最合适的。

    《Java Redis(一):实现文章点赞排名》 image.png

功能实现

代码如下

//连接Redis
redis.clients.jedis.Jedis jedis = new redis.clients.jedis.Jedis("xxx.xx.x.xx");
System.out.println("success");
//创建4篇文章,用hash存储
jedis.hset("article:00001","title","文章1");
jedis.hset("article:00002","title","文章2");
jedis.hset("article:00003","title","文章3");
jedis.hset("article:00004","title","文章4");
Map stringStringMap = jedis.hgetAll("article:00004");
System.out.println(stringStringMap);
//创建一个有序集合,用来存文章的点赞排名。
jedis.zadd("score", 0, "article:00001");
jedis.zadd("score", 0, "article:00002");
jedis.zadd("score", 0, "article:00003");
jedis.zadd("score", 0, "article:00004");
System.out.println("文章获取到的"+jedis.zrange("score", 0, -1)
.stream()
.sorted(Comparator.reverseOrder())
.collect(Collectors.toList()));
//现在模拟用户点赞。
//用户点赞就在该文章的基础上+1
jedis.zincrby("score",1,"article:00001");
jedis.zincrby("score",1,"article:00002");
jedis.zincrby("score",1,"article:00004");
jedis.zincrby("score",1,"article:00003");
jedis.zincrby("score",1,"article:00001");
jedis.zincrby("score",1,"article:00001");
jedis.zincrby("score",1,"article:00002");
jedis.zincrby("score",1,"article:00002");
jedis.zincrby("score",1,"article:00004");
jedis.zincrby("score",1,"article:00004");
jedis.zincrby("score",1,"article:00004");
jedis.zincrby("score",1,"article:00004");
//打印输出的list
Set score1 = jedis.zrevrangeWithScores("score", 0, -1);
for (Tuple t : score1) {
System.out.println(t.getElement()+":"+t.getScore());
}

推荐阅读
author-avatar
HuPangpang_
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有