Spring Boot Redis 实现点赞功能

 
更多

在现代的社交媒体应用程序中,点赞功能是一项非常常见和受欢迎的功能。本文将带你通过使用Spring Boot和Redis来实现点赞功能。

概述

点赞功能允许用户为特定的内容(例如文章、评论或照片等)表示喜好或赞同。当用户点赞某个内容时,系统会记录用户的点赞,并根据点赞数量来显示热门内容或排序。

技术栈

在这个示例中,我们将使用以下技术:

  • Spring Boot:基于Spring框架的快速开发框架,简化了Spring应用程序的搭建和配置。
  • Redis:内存数据库,广泛用于缓存和键值存储。
  • Maven:用于构建和管理项目依赖关系。

步骤

1. 设置Spring Boot项目

首先,我们需要设置一个Spring Boot项目。你可以使用Spring Initializer创建一个新的项目,然后在pom.xml文件中添加所需的依赖关系。

<dependencies>
    <!-- Spring Boot Web -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- Spring Data Redis -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>
</dependencies>

2. 连接到Redis

application.properties文件中配置Redis的连接信息。

spring.redis.host=localhost
spring.redis.port=6379

通过上面的配置,我们可以将Redis连接到本地主机的默认端口。

3. 实现点赞功能

创建一个LikeService类实现点赞功能:

@Service
public class LikeService {

    @Autowired
    private RedisTemplate<String, String> redisTemplate;

    public void like(String userId, String contentId) {
        String key = "likes:" + contentId;
        redisTemplate.opsForSet().add(key, userId);
    }

    public long getLikesCount(String contentId) {
        String key = "likes:" + contentId;
        return redisTemplate.opsForSet().size(key);
    }

    public boolean hasLiked(String userId, String contentId) {
        String key = "likes:" + contentId;
        return redisTemplate.opsForSet().isMember(key, userId);
    }

    public void unlike(String userId, String contentId) {
        String key = "likes:" + contentId;
        redisTemplate.opsForSet().remove(key, userId);
    }
}

在上面的代码中,我们使用Redis的Set数据结构来记录点赞的用户。like方法用于将用户添加到点赞集合中,getLikesCount方法用于获取点赞数量,hasLiked方法用于检查用户是否已经点赞,unlike方法用于取消点赞。

4. 创建RESTful API

创建一个控制器类(如LikeController),提供RESTful API来处理点赞操作:

@RestController
@RequestMapping("/api/likes")
public class LikeController {

    @Autowired
    private LikeService likeService;

    @PostMapping("/{contentId}")
    public void like(@PathVariable String contentId, @RequestParam String userId) {
        likeService.like(userId, contentId);
    }

    @GetMapping("/{contentId}/count")
    public long getLikesCount(@PathVariable String contentId) {
        return likeService.getLikesCount(contentId);
    }

    @GetMapping("/{contentId}/check")
    public boolean hasLiked(@RequestParam String userId, @PathVariable String contentId) {
        return likeService.hasLiked(userId, contentId);
    }

    @DeleteMapping("/{contentId}")
    public void unlike(@PathVariable String contentId, @RequestParam String userId) {
        likeService.unlike(userId, contentId);
    }
}

在上面的代码中,我们使用@PostMapping@GetMapping@DeleteMapping注解来定义不同的HTTP方法,并使用@PathVariable@RequestParam注解来获取路径参数和查询参数。

5. 测试点赞功能

现在,你可以启动应用程序并使用任何HTTP客户端来测试点赞功能。例如,你可以使用curl命令来模拟以下请求:

curl -X POST http://localhost:8080/api/likes/content123?userId=user123
curl http://localhost:8080/api/likes/content123/count
curl http://localhost:8080/api/likes/content123/check?userId=user123
curl -X DELETE http://localhost:8080/api/likes/content123?userId=user123

以上请求会执行点赞、获取点赞数量、检查是否点赞和取消点赞操作。

结论

通过使用Spring Boot和Redis,我们可以非常容易地实现点赞功能。Redis的快速读写能力和Set数据结构的特点使得点赞功能的实现变得非常高效。

希望这篇文章对你理解并实现点赞功能有所帮助。如果你有任何问题或建议,请随时留言。

谢谢阅读!

打赏

本文固定链接: https://www.cxy163.net/archives/6041 | 绝缘体

该日志由 绝缘体.. 于 2023年11月11日 发表在 未分类 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: Spring Boot Redis 实现点赞功能 | 绝缘体
关键字: , , , ,

Spring Boot Redis 实现点赞功能:等您坐沙发呢!

发表评论


快捷键:Ctrl+Enter