1. 项目介绍
1.1. 前后端介绍
- 后端框架:SpringBoot+MyBatis
- 前端框架:Thymeleaf
- 数据库:
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. 项目亮点
- 实现了登录拦截器
- 利用Redis来缓存数据,减少了查询数据库的次数。
- 利用Redis来保存对帖子的操作,如,点赞量。评论量、浏览量类似。
- 数据回写入数据库,利用Quartz来做定时任务,如,2h回写一次。
- 如何保证缓存与数据库的数据一致性:延时双删。
- 如何避免 缓存穿透:布隆过滤器;
- 如何避免 缓存击穿:热点数据设置不失效;
- 如何避免 缓存雪崩:设置随机失活时间,避免大量数据集中失效。
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的高阶部分,没有实现。教师页面也没有做。只能说是个雏形吧。