【SpringBoot整合】缓存篇
基本环境搭建
导入数据库文件
创建JavaBean封装数据
整合Mybatis操作数据库
配置数据源
1
2
3
4
5
6
7spring.datasource.url=jdbc:mysql://localhost:3306/spring_cache
spring.datasource.username=root
spring.datasource.password=abc123aa
spring.datasource.data-username=com.mysql.jdbc.Driver
#开启驼峰命名匹配规则
mybatis.configuration.map-underscore-to-camel-case=true使用注解版的Mybatis
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public interface EmployeeMapper {
public Employee getEmpById(Integer id);
public void updateEmp(Employee employee);
public void deleteEmpById(Integer id);
public void insertEmp(Employee employee);
}1
2
3
4
5
6
7
8
9
10//指定需要扫描的mapper接口所在的包
//开启基于注解的Cache
public class Springboot01CacheApplication {
public static void main(String[] args) {
SpringApplication.run(Springboot01CacheApplication.class, args);
}
}
开启缓存
开启基于注解的缓存
@EnableCaching
标注缓存注解
@Cacheable
:将方法的运行结果进行缓存,以后再要相同的数据,直接从缓存中取,不调用方法 几个属性:
cacheNames/value
:指定缓存组件的名字
key
:缓存数据使用的key,默认是方法的参数值
keyGenerator:key
的生成器,可以自己指定key的生成器的组件id(key和keyGenerator二选一使用)cacheManager
:指定缓存管理器
condition
:指定符合条件的情况下才缓存condition = #id > 0
unless
:与condition相反
sync
:使用异步模式@CacheEvict
:缓存清楚 几个属性:
key
:指定要清楚的数据
allEntries = true
:指定清楚缓存中的所有数据
beforeInvocation
:缓存的清楚是否在方法执行之前进行@CachePut
: 既调用方法,又更新缓存数据(先调用方法,将方法的结果放入缓存中)
@CacheConfig
:抽取缓存的公共配置(在类上标注)
@CacheConfig(cacheNames = "emp")
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public class EmployeeService {
EmployeeMapper employeeMapper;
/**
* 将方法的运行结果进行缓存,以后再要相同的数据,直接从缓存中获取
* @param id
* @return
*/
public Employee getEmp(Integer id) {
System.out.println("查询"+id+"号员工");
return employeeMapper.getEmpById(id);
}
public Employee updateEmp(Employee employee) {
System.out.println("update emp~");
employeeMapper.updateEmp(employee);
return employee;
}
public void deleteEmp(Integer id) {
System.out.println("delete emp");
employeeMapper.deleteEmpById(id);
}
}
原理
自动配置类:
CacheAutoConfiguration
缓存的配置类:
默认生效的类:
org.springframework.boot.autoconfigure.cache.SimpleCacheConfiguration
……
整合Redis
1.安装Redis
- 使用docker拉取redis镜像
在拉取镜像过程中,添加国内的阿里云镜像加速器可以提高拉取速度!
1 | vim /etc/docker/daemon.json |
启动redis
1
2
3
4
5
6docker run -d -p 6379:6379 --name myredis redis
-d:后台的方式启动
-p:暴露端口
6379:6379:将虚拟机的6379映射到容器的6379端口
--name myredis:起别名myredis
redis:要运行的镜像查看运行状况:
- 使用 Redis Desktop Manger 建立连接
2.引入redis的starter
1 | <dependency> |
使用redis时,在RedisAutoConfiguration
中注入了两个非常重要的组件:
RedisTemplate
StringRedisTemplate
1 |
|
redis常见五大数据类型:
String、List、Set、Hash、ZSet(有序集合)
1 |
|
3.配置redis
1 | spring.redis.host=192.168.5.129 |
4.测试缓存
- 原理:
- 引入redis的starter,容器中保存的是
RedisCacheManager
RedisCacheManager
帮我们创建RedisCache
来作为缓存组件RedisCache
通过 redis 操纵缓存
- 引入redis的starter,容器中保存的是