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

微信亿级在线点赞系统,用Redis如何实现?

发布时间:2019-12-07 15:58:26 所属栏目:MySql教程 来源:站长网
导读:副标题#e# 点赞功能大家都不会陌生,像微信这样的社交产品中都有,但别看功能小,想要做好需要考虑的东西还挺多的,如海量数据的分布式存储、分布式缓存、多 IDC 的数据一致性、访问路由到机房的算法等等。 图片来 Pexels 本文介绍大型社交平台点赞系统的设

            UserLike ul = getByLikedUserIdAndLikedPostId(like.getLikedUserId(), like.getLikedPostId()); 

            if (ul == null){ 

                //没有记录,直接存入 

                save(like); 

            }else{ 

                //有记录,需要更新 

                ul.setStatus(like.getStatus()); 

                save(ul); 

            } 

        } 

    } 

 

    @Override 

    @Transactional 

    public void transLikedCountFromRedis2DB() { 

        List<LikedCountDTO> list = redisService.getLikedCountFromRedis(); 

        for (LikedCountDTO dto : list) { 

            UserInfo user = userService.findById(dto.getId()); 

            //点赞数量属于无关紧要的操作,出错无需抛异常 

            if (user != null){ 

                Integer likeNum = user.getLikeNum() + dto.getCount(); 

                user.setLikeNum(likeNum); 

                //更新点赞数量 

                userService.updateInfo(user); 

            } 

        } 

    } 

数据库的操作就这些,主要还是增删改查。

开启定时任务持久化存储到数据库

定时任务 Quartz 很强大,就用它了。Quartz 使用步骤如下:

①添加依赖

<dependency> 

    <groupId>org.springframework.boot</groupId> 

    <artifactId>spring-boot-starter-quartz</artifactId> 

</dependency> 

②编写配置文件

package com.solo.coderiver.user.config; 

 

import com.solo.coderiver.user.task.LikeTask; 

import org.quartz.*; 

import org.springframework.context.annotation.Bean; 

import org.springframework.context.annotation.Configuration; 

 

@Configuration 

public class QuartzConfig { 

 

(编辑:威海站长网)

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

热点阅读