【Redis】Redis实现点赞、点赞排行榜

目录

一、点赞

1、思路

2、代码实现

二、点赞排行榜

1、思路

2、代码实现


一、点赞

1、思路

在我们的项目中我们有时候会碰到这样的需求,比如实现一个博客系统,当用户访问到这篇博客时可以进行点赞,那么这个功能如何去实现呢,我们可以在数据库中维护一张点赞表,当用户刚进入这个博客页面时拿着这个博客的id发起请求查询这张点赞表,看是否存在点赞记录,如果存在返回前端,前端获取到后将点赞按钮高亮色展示,当用户再次点击时则发起取消点赞请求将数据库中点赞数-1且删除点赞记录,如果没有点过赞则发起点赞请求操作数据库使得点赞数+1以及插入一条点赞记录,上述流程基本全是数据库操作,我们可以通过redis来对该功能进行优化,那么我们怎么优化呢,可以借鉴之前redis优化秒杀项目一人一单的思路,此处一人只能赞一次与一人一单极为相似,我们可以使用redis中的set数据结构,当用户点赞时可以将该博客的id作为set类型key的组成,将用户id作为value值存入set,然后让数据库中点赞量+1。用户进入页面后查询redis中的该set集合,发现该用户id在其中,则使点赞按钮高亮色再次点击时将数据库中的点赞数-1在将该用户id从set集合中移除,整体思路如上述,下面我们使用代码来实现一下

2、代码实现

此处为了代码全部展示,将部分操作全部放在controller层,其中reidskey的命名为了方便此处阅读使用硬编码而没有使用redis key工具类进行管理,在项目开发中推荐使用自定义redis key的工具类进行管理

@RestController
@RequestMapping("/api/follow")
public class FollowController {
     @Autowired
    private StringRedisTemplate stringRedisTemplate;
     
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

1886i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值