Springboot+MyBatis+Redis+MySQL实现课程交流论坛

本文详细介绍了一个基于SpringBoot、MyBatis和Thymeleaf的项目,涉及登录拦截、Redis缓存应用、数据库设计、以及如何利用Redis优化数据一致性与防击穿策略。项目亮点包括登录拦截器、数据持久化与定时任务的结合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 项目介绍

1.1. 前后端介绍

  1. 后端框架:SpringBoot+MyBatis
  2. 前端框架:Thymeleaf
  3. 数据库:
    3.1. 关系型数据库:MySQL
    3.2. 内存型数据库:Redis

1.2. 项目结构

1.2.1. 后端结构

   com
   |
   |-—— ling
        |
        |-—— LearningApplication.java
   		|
   		|-—— config(配置类)
   		|	|
   		|	|-——  LoginHandlerInterceptor.java(配置拦截器)
   		|	|
   		|	|-——  MyMvcConfig.java(主配置)
   		|	|
   		|	|-——  RedisConfig.java(Redis配置类)
   		|
   		|-—— controller(方法.直接使用)
   		|	|
   		|	|-——  LoginController.java(登录)
   		|	|
   		|	|-——  Stu
   		|   |    |
   		|   |    |-——CommentController.java
   		|   |    |
   		|   |    |-——PostController.java
   		|   |
   		|   |-——Tea
   		|        |
   		|        |-——xxxxx.java
   		|
   		|-—— service(方法.供Controller调用)
   		|	|
   		|	|-——  Like2Service.java(接口)
   		|	|
   		|	|-——  Like2ServiceImpl.xml(实现)
   		|	|
   		|	|-——  RedisService.java(接口)
   		|	|
   		|	|-——  RedisServiceImpl.java(实现)
   		|	|
   		|	|-——  xxxxService.java(接口)
   		|	|
   		|	|-——  xxxxxServiceImpl.java(实现)
   		|
   		|-—— pojo(实体类)
   		|	|
   		|	|-—— Comment.java
   		|	|
   		|	|-—— Post.java
   		|
   		|-—— mapper (方法,操作数据库)
   		|	|
   		|	|-——  CommentMapper.java
   		|	|
   		|	|-——  CommentMapper.xml
   		|	|
   		|	|-——  PostMapper.java
   		|	|
   		|	|-——  PostMapper.xml
   		|
   		|-——utils
   		    |
   		    |-——RedisUtil.java
   		    |
   		    |-——RedisKeyUtils.java

1.3. 项目展示

1.3.1. 登录

在这里插入图片描述

1.3.2 论坛主页

在这里插入图片描述

1.3.3. 我的帖子

在这里插入图片描述

1.3.4. 发布帖子

在这里插入图片描述

1.3.5. 详情页

在这里插入图片描述

1.3.6. 评论页

在这里插入图片描述

1.4. 项目亮点

  1. 实现了登录拦截器
  2. 利用Redis来缓存数据,减少了查询数据库的次数。
  1. 利用Redis来保存对帖子的操作,如,点赞量。评论量、浏览量类似。
  2. 数据回写入数据库,利用Quartz来做定时任务,如,2h回写一次。
  3. 如何保证缓存与数据库的数据一致性:延时双删。
  4. 如何避免 缓存穿透:布隆过滤器;
  5. 如何避免 缓存击穿:热点数据设置不失效;
  6. 如何避免 缓存雪崩:设置随机失活时间,避免大量数据集中失效。

2. 实现

2.1. 配置文件

贼少,对比SpringMVC

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://192.168.56.10:3306/mybatis?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
    username: root
    password: root
  thymeleaf:
    cache: false
  redis:
    host: 192.168.56.10
    port: 6379


mybatis:
  type-aliases-package: com.ling.pojo
  mapper-locations: classpath:mybatis/mapper/*.xml

2.1. 数据库设计

2.2.pojo

2.3. mapper

2.4. service

2.5. controller

2.6. config

2.7. utils

3. 难点

如何使用Redis做缓存呢??

3.1. 以点赞数据为例分析

4. 改进

Redis的高阶部分,没有实现。教师页面也没有做。只能说是个雏形吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值