点赞功能是很多平台都会提供的一个功能,那么,我们要如何实现点赞和取消点赞呢?
这篇文章总结了我在项目中实现点赞的方法。
缓存 vs 数据库?
首先我们要考虑的是数据要放到哪里,很多时候我们都会把数据放到数据库(如 MySQL),由于关系型数据库的稳定性,大部分场景下我们也都会使用关系数据库来存储数据。
不过,在一些特殊的场景下,传统的关系型数据库很可能无法满足我们的需求。比如,在访问量较大的情况下,数据库很可能会宕机或者访问速度非常慢。这对用户来说是不能容忍的。因此就有了非关系型数据库,如 Redis 作为缓存,将数据放到内存中,实现数据的快速获取。下面我们就来看看如何使用 Redis 缓存实现点赞功能。
Redis 基本数据结构
数据结构
含义
string
字符串变量
list
链表
hash
映射表
set
无序集合
zset
有序集合
具体介绍可以参考 这篇博客。
点赞相关操作
对帖子点赞
对帖子取消点赞
查看帖子点赞数
我们可以先定义一个接口,包含了点赞的相关操作:
public interface LikeCacheService {
/**
* 获取更新过的点赞帖子 id
* @return
*/
Set listUpdatedPost();
/**
* 测试用户是否已经对帖子点过赞