当前位置: 首页 > news >正文

免费建立国外网站福州网站制作有限公司

免费建立国外网站,福州网站制作有限公司,wordpress 过多的重定向,网站建设网站建设哪里有更多SpringBoot3内容请关注我的专栏#xff1a;《SpringBoot3》 期待您的点赞#x1f44d;收藏⭐评论✍ 重学SpringBoot3-集成Redis#xff08;十二#xff09;之点赞功能实现 1. 点赞功能的场景分析2. 项目环境配置2.1. 依赖引入2.2. Redis 配置 3. 点赞功能的实现3.1. 点… 更多SpringBoot3内容请关注我的专栏《SpringBoot3》 期待您的点赞收藏⭐评论✍ 重学SpringBoot3-集成Redis十二之点赞功能实现 1. 点赞功能的场景分析2. 项目环境配置2.1. 依赖引入2.2. Redis 配置 3. 点赞功能的实现3.1. 点赞服务层3.2. 点赞控制器3.3. 演示点赞操作获取点赞数检查用户是否点赞取消点赞 4. 点赞功能的详细解释4.1. 用户点赞和取消点赞4.2. 统计点赞数4.3. 判断用户是否点赞 5. Redis Set 数据结构的优势6. 总结 在现代的应用中点赞功能是一个非常常见的需求尤其在社交媒体、博客等平台上。Redis 作为一个高性能的键值存储系统由于其读写速度快、支持丰富的数据结构因此非常适合用来实现实时的点赞功能。本文将介绍如何结合 Spring Boot 3 和 Redis 来实现一个高效的点赞功能。 1. 点赞功能的场景分析 点赞功能通常涉及以下场景 用户点赞或取消点赞某个用户对某篇文章或某条评论进行点赞或取消操作。统计点赞数量实时显示某个对象如文章、视频、评论的总点赞数。用户点赞状态查询判断某个用户是否对某个对象点赞过。 Redis 通过Set 数据结构可以很好地解决这些问题。Redis 的 Set 不允许重复元素且支持快速添加、删除、判断成员是否存在等操作。 2. 项目环境配置 2.1. 依赖引入 首先在 pom.xml 中引入 Spring Boot 3 和 Redis 的相关依赖具体参考重学SpringBoot3-集成Redis一之基本使用 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId /dependency2.2. Redis 配置 在 application.yml 中配置 Redis 连接 spring:data:redis:host: localhostport: 6379 # Redis 端口password: redis123456 # 如果有密码可以在这里配置lettuce:pool:max-active: 100 # 最大并发连接数max-idle: 50 # 最大空闲连接数min-idle: 10 # 最小空闲连接数3. 点赞功能的实现 在实现点赞功能时通常会用 Redis 的 Set 数据结构来存储每个对象如文章、视频的点赞用户列表。每次点赞操作就是往这个 Set 中添加用户 ID取消点赞则是从 Set 中移除用户 ID。 3.1. 点赞服务层 package com.coderjia.boot310redis.service;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Service;/*** author CoderJia* create 2024/10/10 下午 09:45* Description**/ Service public class LikeService {Autowiredprivate StringRedisTemplate redisTemplate;// Redis Key 前缀private static final String LIKE_KEY_PREFIX like:; // 用户点赞public void likePost(String postId, String userId) {String redisKey LIKE_KEY_PREFIX postId;redisTemplate.opsForSet().add(redisKey, userId);}// 用户取消点赞public void unlikePost(String postId, String userId) {String redisKey LIKE_KEY_PREFIX postId;redisTemplate.opsForSet().remove(redisKey, userId);}// 查询某个帖子点赞数public Long getLikeCount(String postId) {String redisKey LIKE_KEY_PREFIX postId;return redisTemplate.opsForSet().size(redisKey);}// 判断用户是否点赞public boolean hasLiked(String postId, String userId) {String redisKey LIKE_KEY_PREFIX postId;return Boolean.TRUE.equals(redisTemplate.opsForSet().isMember(redisKey, userId));} } 3.2. 点赞控制器 package com.coderjia.boot310redis.demos.web;import com.coderjia.boot310redis.service.LikeService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController;/*** author CoderJia* create 2024/10/10 下午 09:46* Description**/ RestController RequestMapping(/like) public class LikeController {Autowiredprivate LikeService likeService;// 点赞操作PostMapping(/like)public String like(RequestParam String postId, RequestParam String userId) {likeService.likePost(postId, userId);return Liked post: postId by user: userId;}// 取消点赞PostMapping(/unlike)public String unlike(RequestParam String postId, RequestParam String userId) {likeService.unlikePost(postId, userId);return Unliked post: postId by user: userId;}// 获取点赞数GetMapping(/count)public Long getLikeCount(RequestParam String postId) {return likeService.getLikeCount(postId);}// 检查用户是否点赞GetMapping(/status)public boolean hasLiked(RequestParam String postId, RequestParam String userId) {return likeService.hasLiked(postId, userId);} }3.3. 演示 点赞操作 curl -X POST http://localhost:8080/like/like?postIdp101userId1获取点赞数 curl http://localhost:8080/like/count?postIdp101检查用户是否点赞 curl http://localhost:8080/like/status?postIdp101userId1取消点赞 curl -X POST http://localhost:8080/like/unlike?postIdp101userId14. 点赞功能的详细解释 4.1. 用户点赞和取消点赞 每当用户点赞时我们将用户 ID 存入 Redis 的 Set 中。由于 Redis 的 Set 不允许重复元素用户多次点赞同一篇文章也只会被记录一次。 redisTemplate.opsForSet().add(redisKey, userId);取消点赞则是将用户 ID 从 Set 中移除 redisTemplate.opsForSet().remove(redisKey, userId);4.2. 统计点赞数 统计点赞数非常简单直接调用 Redis 的 size() 方法即可 redisTemplate.opsForSet().size(redisKey);这比使用传统数据库查询要快得多尤其在大量用户点赞的情况下Redis 能保持高性能。 4.3. 判断用户是否点赞 可以通过 Redis 的 isMember() 方法来判断某个用户是否已经对某篇文章点赞 redisTemplate.opsForSet().isMember(redisKey, userId);这一点对前端显示用户是否已点赞的状态非常重要用户体验更好。 5. Redis Set 数据结构的优势 Redis 的 Set 数据结构非常适合用来存储点赞功能的用户列表原因有以下几点 唯一性Redis Set 不允许重复元素确保用户对同一篇文章只能点赞一次。高性能Redis 是内存级存储读写速度极快适合大规模的点赞操作。丰富的操作Set 提供了丰富的操作如添加成员、删除成员、计算数量、检查成员是否存在等这些操作都是 O(1) 复杂度性能非常高。 6. 总结 通过结合 Spring Boot 3 与 Redis我们可以轻松实现高效的点赞功能并利用 Redis 的 Set 数据结构实现去重、快速统计等操作。相比于传统的数据库操作使用 Redis 实现的点赞功能性能更高、扩展性更好尤其适合用户量大、点赞操作频繁的应用场景。 持久化到数据库 仅使用 Redis适用于对数据一致性要求不高的场景比如短期有效的点赞数据或者系统对少量点赞数据丢失不敏感。 Redis MySQL方案适用于对数据一致性要求高的场景比如电商、社交平台中点赞数据不能丢失且需要长期保存。通常采用异步持久化具体流程可以是 用户点赞时首先将数据写入 Redis。通过定时任务如每隔几分钟或消息队列将 Redis 中的点赞数据同步到数据库。在定时任务或队列消费过程中可以批量将点赞数据写入数据库降低数据库的写入压力。
http://www.dnsts.com.cn/news/269300.html

相关文章:

  • 河池网站制作应用市场app下载安装到手机
  • 做网站会什么制作哪个网站好
  • 湖北省建设网站首页网页版梦幻西游天象攻略
  • 满足seo需求的网站谁知道苏州溪城水处理网站谁做的
  • 随州建设网站网站架构包含哪几部分
  • 西安网站建设咪豆交互式网站开发
  • 陕西省建设信息网站怎么做记步数的程序到网站
  • 中国建设银行积分网站网站个人备案百度推官
  • 科技类网站简介怎么做做外贸如何浏览国外网站
  • 提供o2o网站建设四川建设网站官网
  • 营销网站类型深圳网站备案
  • 专业网站制作哪家强服装微商城网站建设
  • 钓鱼网站的主要危害免费建材网站模板
  • 手机企业网站制作网页设计师多少钱一个月
  • 留言网站建设的报告乐清网站的建设
  • 成都网站建设哪家好wordpress媒体库全选
  • 做软件的网站建设东风南方实业集团 深圳vi设计公司
  • 郑州网站关键陕西的网站建设公司排名
  • 怎样建设直播网站微信的微网站模板下载安装
  • 网站每年需要续费吗现在还用dw做网站设计么
  • 网络公司代做的网站注意事项山东济南建设网
  • 选择大连网站建设做网站 客户一直要求改
  • ps网站设计素材产品网络推广方案设计
  • 阿里云Windows网站建设国家企业信用信息公示系统官网湖北
  • 网站建设和网站推广可以同一家做吗普陀微信网站建设
  • 郑州企业网站优化手表网站 云
  • 学生制作网站建设 维护做游戏视频去哪个网站好
  • 屏蔽网站iphtml5模板免费下载
  • 明年做那个网站致富保洁产品网站建设价格
  • 网站一定要服务器吗公司需要网站 该怎么做