重学SpringBoot3-集成Redis(十二)之点赞功能实现
在现代的Web应用中,点赞功能是非常常见的一个互动机制,它允许用户对内容进行表态。今天我们将利用Spring Boot 3和Redis来实现一个简单的点赞功能。由于Redis的高效性,我们可以利用它的特性来实现高并发点赞。
1. 环境准备
在开始之前,请确保你已经搭建了Spring Boot的开发环境,并且已经集成了Redis。可以通过以下依赖来引入Spring Boot和Redis的支持:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
2. Redis配置
在application.yml
文件中配置Redis连接信息:
spring:
redis:
host: localhost
port: 6379
请根据你的Redis服务来调整host和port。
3. 创建点赞的业务逻辑
我们需要创建一个服务类来处理点赞的逻辑。下面是一个简单的实现:
@Service
public class LikeService {
@Autowired
private StringRedisTemplate stringRedisTemplate;
private static final String LIKE_KEY_PREFIX = "post:likes:"; // Redis键前缀
public void likePost(String postId, String userId) {
// 使用Set防止用户重复点赞
String key = LIKE_KEY_PREFIX + postId;
stringRedisTemplate.opsForSet().add(key, userId);
}
public long countLikes(String postId) {
String key = LIKE_KEY_PREFIX + postId;
return stringRedisTemplate.opsForSet().size(key);
}
public boolean hasLiked(String postId, String userId) {
String key = LIKE_KEY_PREFIX + postId;
return stringRedisTemplate.opsForSet().isMember(key, userId);
}
}
解释:
likePost
: 此方法允许用户对某个帖子的点赞。我们使用Redis的Set来存储用户的ID,以避免用户重复点赞。countLikes
: 此方法返回某个帖子的点赞数。hasLiked
: 此方法检查某个用户是否已经对该帖子进行了点赞。
4. 创建Controller
接下来,我们需要创建一个控制器来处理点赞请求:
@RestController
@RequestMapping("/posts")
public class PostController {
@Autowired
private LikeService likeService;
@PostMapping("/{postId}/like")
public ResponseEntity<String> like(@PathVariable String postId, @RequestParam String userId) {
if (likeService.hasLiked(postId, userId)) {
return ResponseEntity.badRequest().body("用户已点赞");
}
likeService.likePost(postId, userId);
return ResponseEntity.ok("点赞成功");
}
@GetMapping("/{postId}/likes")
public ResponseEntity<Long> getLikes(@PathVariable String postId) {
long likesCount = likeService.countLikes(postId);
return ResponseEntity.ok(likesCount);
}
}
解释:
like
方法处理用户的点赞请求。如果用户已经点赞,则返回错误信息;否则,点赞成功。getLikes
方法返回某个帖子的点赞总数。
5. 测试
启动Spring Boot应用后,通过Postman等工具可以进行接口测试:
- 点赞请求:
POST /posts/{postId}/like?userId={userId}
- 获取点赞数请求:
GET /posts/{postId}/likes
6. 总结
以上就是使用Spring Boot 3和Redis实现简单点赞功能的完整示例。通过Redis的Set,我们能够高效且简洁地管理用户的点赞行为,同时避免重复点赞的情况。在实际项目中,可以结合更多功能,如解除点赞、记录点赞时间等,来增强业务逻辑的完整性。
希望这篇文章能够帮助大家更好地理解Spring Boot和Redis的结合使用,以及如何实现简单的点赞功能!