前言
在上一章节中,壹哥 带大家利用默认的ConcurrentHashMap,实现了一种默认的内存级别的缓存效果。但是这种缓存方案,并没有把数据实现持久化缓存,也就是说一旦内存被释放,缓存的数据也就不存在了。所以在本章节中,我会带大家结合之前学过的Redis,带各位把数据持久化缓存到Redis中。
本案例我会直接在上一节的案例基础上进行改造。
一. Spring Boot整合Redis实现缓存
1. 创建Web项目
我们按照之前的经验,创建一个SpringBoot的Web程序,具体过程略。
2. 添加依赖包
我们在上一章节的基础上,添加2个新的依赖包,redis和json的。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!-- 改造:添加sql相关的依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.39</version>
</dependency>
复制代码
3. 修改application.yml配置文件
主要是添加关于redis的配置信息,以及设置缓存类型。
cache:
default-exp: 1000 #单位秒,缓存的过期时间
server:
port: 8080
spring:
application:
name: cache-demo
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: syc
url: jdbc:mysql://localhost:3306/spring-security?useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&serverTimezone=UTC
redis:
host: localhost
port: 6379
database: 0
#password:
cache:
type: redis #由redis进行缓存,一共有10种缓存方案
jpa:
database: mysql
show-sql: true #开发阶段,打印要执行的sql语句.
hibernate:
ddl-auto: update
复制代码
4. 修改缓存管理器等配置类
这里我创建一个CacheConfig缓存配置类,对Redis进行基本的配置。
package com.yyg.boot.config;
import com.alibaba.fastjson.JSON;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.Propert