设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 手机 数据
当前位置: 首页 > 站长学院 > MySql教程 > 正文

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

发布时间:2019-12-06 01:43 所属栏目:115 来源:站长网
导读:publicUserLike(StringlikedUserId,StringlikedPostId,Integerstatus){ this.likedUserId=likedUserId; this.likedPostId=likedPostId; this.status=status; } } 数据库操作 操作数据库同样封装在接口中: ①LikedS

    public UserLike(String likedUserId, String likedPostId, Integer status) { 

        this.likedUserId = likedUserId; 

        this.likedPostId = likedPostId; 

        this.status = status; 

    } 

数据库操作

操作数据库同样封装在接口中:

①LikedService

import com.solo.coderiver.user.dataobject.UserLike; 

import org.springframework.data.domain.Page; 

import org.springframework.data.domain.Pageable; 

 

import java.util.List; 

 

public interface LikedService { 

 

    /** 

     * 保存点赞记录 

     * @param userLike 

     * @return 

     */ 

    UserLike save(UserLike userLike); 

 

    /** 

     * 批量保存或修改 

     * @param list 

     */ 

    List<UserLike> saveAll(List<UserLike> list); 

 

 

    /** 

     * 根据被点赞人的id查询点赞列表(即查询都谁给这个人点赞过) 

     * @param likedUserId 被点赞人的id 

     * @param pageable 

     * @return 

     */ 

    Page<UserLike> getLikedListByLikedUserId(String likedUserId, Pageable pageable); 

 

    /** 

     * 根据点赞人的id查询点赞列表(即查询这个人都给谁点赞过) 

     * @param likedPostId 

     * @param pageable 

     * @return 

     */ 

    Page<UserLike> getLikedListByLikedPostId(String likedPostId, Pageable pageable); 

 

    /** 

     * 通过被点赞人和点赞人id查询是否存在点赞记录 

     * @param likedUserId 

     * @param likedPostId 

     * @return 

     */ 

    UserLike getByLikedUserIdAndLikedPostId(String likedUserId, String likedPostId); 

 

    /** 

     * 将Redis里的点赞数据存入数据库中 

     */ 

    void transLikedFromRedis2DB(); 

 

    /** 

     * 将Redis中的点赞数量数据存入数据库 

     */ 

    void transLikedCountFromRedis2DB(); 

 

②LikedServiceImpl 实现类

import com.solo.coderiver.user.dataobject.UserInfo; 

import com.solo.coderiver.user.dataobject.UserLike; 

import com.solo.coderiver.user.dto.LikedCountDTO; 

import com.solo.coderiver.user.enums.LikedStatusEnum; 

import com.solo.coderiver.user.repository.UserLikeRepository; 

import com.solo.coderiver.user.service.LikedService; 

import com.solo.coderiver.user.service.RedisService; 

import com.solo.coderiver.user.service.UserService; 

import lombok.extern.slf4j.Slf4j; 

import org.springframework.beans.factory.annotation.Autowired; 

import org.springframework.data.domain.Page; 

import org.springframework.data.domain.Pageable; 

import org.springframework.stereotype.Service; 

import org.springframework.transaction.annotation.Transactional; 

 

import java.util.List; 

 

@Service 

@Slf4j 

public class LikedServiceImpl implements LikedService { 

 

    @Autowired 

    UserLikeRepository likeRepository; 

 

    @Autowired 

    RedisService redisService; 

 

    @Autowired 

    UserService userService; 

 

    @Override 

    @Transactional 

    public UserLike save(UserLike userLike) { 

        return likeRepository.save(userLike); 

    } 

 

    @Override 

    @Transactional 

    public List<UserLike> saveAll(List<UserLike> list) { 

        return likeRepository.saveAll(list); 

    } 

 

    @Override 

    public Page<UserLike> getLikedListByLikedUserId(String likedUserId, Pageable pageable) { 

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读