微信亿级在线点赞系统,用Redis如何实现?
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) { (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |