在Redis中新建集合放入所有点过赞的用户
@Override
public Result likeBlog(Long id) {
// 判断是否已经点赞
String key = "blog::liked::" + id;
Long userId = UserHolder.getUser().getId();
Boolean isLiked = stringRedisTemplate.opsForSet().isMember(key, String.valueOf(userId));
// 未点赞 可以点赞
// 点赞+1
// 保存到Redis set集合
if(BooleanUtil.isFalse(isLiked)){
boolean isSuccess = update().setSql("liked = liked + 1").eq("id", id).update();
if(isSuccess){
stringRedisTemplate.opsForSet().add(key, String.valueOf(userId));
}
}else{
// 已经点赞 取消点赞
boolean isSuccess = update().setSql("liked = liked - 1").eq("id", id).update();
if(isSuccess){
stringRedisTemplate.opsForSet().remove(key,userId.toString());
}
}
return Result.ok();
}