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

释放双眼,带上耳机,听听看~!

开篇

  • 本篇用Redis实现文章的点赞,并由从点赞数有多到低排列。

  • 实现语言是JAVA,所以需要用的到包是jedis。

  • 本篇内容:

  • 介绍一下Redis.

    • 功能实现分析。
    • 功能实现。

介绍一下Redis

  • Redis有5种数据类型(字符串String,哈希Hash,列表List,集合Set,有序列表Sort Set).

  • String字符串:存储基本的数据类型。

  • Hash哈希:键值对存储

  • List列表:列表包含的元素,相同元素可以重复出现。

  • Set集合:无序排列,不能重复。

  • Sort Set 有序列表:列表特性,按值排序。

功能分析。

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

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

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

功能实现

代码如下


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
1//连接Redis
2        redis.clients.jedis.Jedis jedis = new redis.clients.jedis.Jedis("123.56.3.171");
3        System.out.println("success");
4
5        //创建4篇文章,用hash存储
6        jedis.hset("article:00001","title","文章1");
7        jedis.hset("article:00002","title","文章2");
8        jedis.hset("article:00003","title","文章3");
9        jedis.hset("article:00004","title","文章4");
10        Map<String, String> stringStringMap = jedis.hgetAll("article:00004");
11        System.out.println(stringStringMap);
12
13        //创建一个有序集合,用来存文章的点赞排名。
14        jedis.zadd("score", 0, "article:00001");
15        jedis.zadd("score", 0, "article:00002");
16        jedis.zadd("score", 0, "article:00003");
17        jedis.zadd("score", 0, "article:00004");
18        System.out.println("文章获取到的"+jedis.zrange("score", 0, -1)
19                .stream()
20                .sorted(Comparator.reverseOrder())
21                .collect(Collectors.toList()));
22
23        //现在模拟用户点赞。
24        //用户点赞就在该文章的基础上+1
25        jedis.zincrby("score",1,"article:00001");
26        jedis.zincrby("score",1,"article:00002");
27        jedis.zincrby("score",1,"article:00004");
28        jedis.zincrby("score",1,"article:00003");
29        jedis.zincrby("score",1,"article:00001");
30        jedis.zincrby("score",1,"article:00001");
31        jedis.zincrby("score",1,"article:00002");
32        jedis.zincrby("score",1,"article:00002");
33        jedis.zincrby("score",1,"article:00004");
34        jedis.zincrby("score",1,"article:00004");
35        jedis.zincrby("score",1,"article:00004");
36        jedis.zincrby("score",1,"article:00004");
37
38        //打印输出的list
39
40        Set<Tuple> score1 = jedis.zrevrangeWithScores("score", 0, -1);
41        for (Tuple t : score1) {
42            System.out.println(t.getElement()+":"+t.getScore());
43        }
44

给TA打赏
共{{data.count}}人
人已打赏
安全运维

OpenSSH-8.7p1离线升级修复安全漏洞

2021-10-23 10:13:25

安全运维

设计模式的设计原则

2021-12-12 17:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索