一、定义工程
创建一个spring boot模块
二、修改pom文件
在pom文件中添加Spring Boot与Redis整合依赖
- <dependencies>
- <!--spring boot与redis整合依赖-->
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-data-redis</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.projectlombok</groupId>
- <artifactId>lombok</artifactId>
- </dependency>
-
- <!--mybatis与spring boot整合依赖-->
- <dependency>
- <groupId>org.mybatis.spring.boot</groupId>
- <artifactId>mybatis-spring-boot-starter</artifactId>
- <version>1.3.2</version>
- </dependency>
-
- <!--mysql驱动-->
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- <version>5.1.47</version>
- </dependency>
-
- <!-- druid驱动 -->
- <dependency>
- <groupId>com.alibaba</groupId>
- <artifactId>druid</artifactId>
- <version>1.1.12</version>
- </dependency>
-
- <!--tomcat内置的JSP解析器-->
- <dependency>
- <groupId>org.apache.tomcat.embed</groupId>
- <artifactId>tomcat-embed-jasper</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-test</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
-
- <build>
- <resources>
- <!--注册dao包下mybatis映射文件为资源目录-->
- <resource>
- <directory>src/main/java</directory>
- <includes>
- <include>**/*.xml</include>
- </includes>
- </resource>
- <!--注册webapp目录为资源目录-->
- <resource>
- <directory>src/main/webapp</directory>
- <targetPath>META-INF/resources</targetPath>
- <includes>
- <include>**/*.*</include>
- </includes>
- </resource>
- </resources>
-
- <plugins>
- <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
三、修改主配置文件
在主配置文件中添加如下内容:
- # 视图的前辍与后辍
- spring:
- mvc:
- view:
- prefix: /
- suffix: .jsp
-
- # 注册数据源
- datasource:
- type: com.alibaba.druid.pool.DruidDataSource
- driver-class-name: com.mysql.jdbc.Driver
- url: jdbc:mysql:///test?useUnicode=true&characterEncoding=utf-8
- username: root
- password: root
-
- #编码设置
- http:
- encoding:
- force: true
- charset: utf-8
- enabled: true
- redis:
- host: 39.97.176.160
- port: 6379
- cache:
- type: redis # 指定缓存类型
- cache-names: realTimeCache # 指定缓存空间名称,随意
-
-
- server:
- tomcat:
- uri-encoding: UTF-8
-
- mybatis:
- # 注册映射文件
- mapper-locations: classpath:com/abc/dao/*.xml
- # 注册实体类别名
- type-aliases-package: com.abc.bean
四、修改实体类Student
由于要将查询的实体类对象缓存到Redis,Redis要求实体类必须序列化。所以需要实体类实现序列化接口
五、修改页面
(1) 修改index页面
(2) 修改welcome.jsp页面
六、 修改Controller类
七、修改Service接口
八、修改Service接口实现类
九、修改Dao接口
十、修改映射文件
十一、测试
注册会清空作用域realTimeCache缓存数据。
查询第一次会缓存信息,后面从Redis获取。
其他
高并发下访问Redis,存在什么问题?存在三个问题
- 缓存穿透:为DB查询为null的数据预设一个值
- 缓存雪崩:提前规划好缓存到期时间
- 热点缓存:双重检测锁机制