mybatisplus配置文件开启redis二级缓存
时间: 2023-05-25 12:05:51 浏览: 117
mybatis+redis实现二级缓存
5星 · 资源好评率100%
1. 引入依赖
在 pom.xml 文件中添加以下依赖:
```
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-extension</artifactId>
<version>3.4.2</version>
</dependency>
<dependency>
<groupId>org.apache.ibatis</groupId>
<artifactId>mybatis-redis-cache</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
```
2. 配置 Redis
在 application.yml 配置文件中添加 Redis 的连接信息:
```
spring:
redis:
host: 127.0.0.1
port: 6379
password: 123456
database: 0
pool:
max-active: 8
max-idle: 8
min-idle: 0
max-wait: -1ms
```
3. 配置 MyBatis Plus
在 MyBatis Plus 配置文件中开启二级缓存并配置 Redis 缓存:
```
mybatis-plus:
configuration:
cache-enabled: true # 开启二级缓存
local-cache-scope: session # 二级缓存作用域
lazy-loading-enabled: true # 开启懒加载
multiple-datasource-enabled: true # 开启多数据源
global-config:
db-config:
id-type: auto # 主键ID类型
field-strategy: not_empty # 字段非空验证
swagger2: true # 是否开启Swagger2
cache:
enabled: true # 开启缓存
type: redis # 缓存类型
# 设置缓存前缀,默认是 mybatis:cache:
# prefix: mybatisplus:
spring:
redis:
cache:
# 过期时间,默认1天
ttl: 86400
# 二级缓存前缀,默认是 mybatisplus:cache:
key-prefix: mybatis-plus:cache:
# 条目数量,默认256个
max-number-of-elements-in-cache: 256
```
4. 实体类开启缓存
在需要开启缓存的实体类上添加 `@CacheNamespace` 注解:
```
@Data
@NoArgsConstructor
@TableName("student")
@CacheNamespace(implementation = MybatisRedisCache.class, eviction = MybatisRedisCache.class, flushInterval = 60000)
public class Student implements Serializable {
@TableId(type = IdType.AUTO)
private Long id;
@TableField("name")
private String name;
@TableField("age")
private Integer age;
}
```
其中,`implementation` 和 `eviction` 属性的值均为 `MybatisRedisCache.class`,表示该实体类使用 Redis 缓存,并且缓存失效时间为 1 分钟(60 秒)。
5. 注册 Redis 缓存插件
在 Spring Boot 应用启动类中注册 Redis 缓存插件:
```
@Configuration
public class MyBatisPlusConfig {
@Bean
public RedisCachePlugin redisCachePlugin(RedisTemplate<Object, Object> redisTemplate) {
return new RedisCachePlugin(redisTemplate);
}
}
```
6. 测试缓存
使用以下代码进行测试:
```
@Test
public void testRedisCache() {
Student student1 = studentService.getById(1L);
Student student2 = studentService.getById(1L);
System.out.println("student1:" + student1);
System.out.println("student2:" + student2);
Assert.assertEquals(student1, student2);
}
```
第一次查询会从数据库中获取数据并保存到 Redis 缓存,第二次查询会直接从 Redis 缓存中获取数据,输出结果如下:
```
DEBUG [MybatisRedisCache] [Session XX] [Namespace com.example.demo.entity.Student] [Cache INSERT] Student(id=1, name=Tom, age=20)
student1:Student(id=1, name=Tom, age=20)
student2:Student(id=1, name=Tom, age=20)
```
阅读全文