使用 Redis 缓存实现点赞和取消点赞的示例代码
点赞功能是很多平台都会提供的一个功能,那么,我们要如何实现点赞和取消点赞呢?
这篇文章总结了我在项目中实现点赞的方法。
缓存vs数据库?
首先我们要考虑的是数据要放到哪里,很多时候我们都会把数据放到数据库(如MySQL),由于关系型数据库的稳定性,大部分场景下我们也都会使用关系数据库来存储数据。
不过,在一些特殊的场景下,传统的关系型数据库很可能无法满足我们的需求。比如,在访问量较大的情况下,数据库很可能会宕机或者访问速度非常慢。这对用户来说是不能容忍的。因此就有了非关系型数据库,如Redis作为缓存,将数据放到内存中,实现数据的快速获取。下面我们就来看看如何使用Redis缓存实现点赞功能。
Redis基本数据结构
数据结构 | 含义 |
---|---|
string | 字符串变量 |
list | 链表 |
hash | 映射表 |
set | 无序集合 |
zset | 有序集合 |
具体介绍可以参考这篇博客。
点赞相关操作
- 对帖子点赞
- 对帖子取消点赞
- 查看帖子点赞数
我们可以先定义一个接口,包含了点赞的相关操作:
publicinterfaceLikeCacheService{ /** *获取更新过的点赞帖子id *@return */ Set
接下来,我们考虑一下要使用哪些数据结构来实现这些功能。
首先,点赞操作和取消点赞不能重复操作的,也就是不能连续点多次赞或者连续取消多次赞,每个用户只能对某帖子点一次赞,因此我们可以使用set来存储每个帖子的点赞用户,key为帖子id,value为每个对该帖子点赞的用户id集合。
- 点赞:将点赞用户id加入对应帖子的点赞用户集
- 取消点赞:将点赞用户id从对应帖子的点赞用户集移除
然后就是帖子点赞数的统计,由于每个帖子都对应一个点赞数,因此我们可以使用hash结构存储帖子的点赞数,key为帖子id,value为该帖子的点赞数。
- 点赞:对应hash结构的value+1
- 取消点赞:对应hash结构的value-1
此外,为了保证数据的可恢复性,我们可以将Redis缓存中的数据定时写入关系型数据库中,进行数据持久化。
具体的实现代码可以参考这个项目的代码:FmsLikeCacheServiceImpl.java。
到此这篇关于使用Redis缓存实现点赞和取消点赞的实现示例的文章就介绍到这了,更多相关Redis点赞和取消点赞内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。