Spring Boot 2 整合 Redis(一)
Spring Boot 2.0.3 简单整合 Redis
IDEA Spring Initialzr 创建工程:选上 Redis 依赖项
Maven 依赖
// Spring Boot 1.5 版本的依赖下 artifactId 是没有 data 的
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
application.yml 文件的配置,其中 Jedis 配置有默认值,Spring Boot 2 后默认的连接池是 lettuce,后面会讲。
server:
port: 6868
spring:
redis:
database: 0 # 0-15db
host: 127.0.0.1
port: 6379
password:
timeout: 1200
# Jedis 的配置, 可以不配置, 有默认值(RedisProperties 类中有指定默认值)
jedis:
pool:
max-active: 8
max-idle: 8
min-idle: 0
max-wait: -1
配置完可以直接注入使用
// 测试 StringRedisTemplate
@GetMapping(“/testStringRedisTemplate”)
public String testStringRedisTemplate() {
String now = LocalDateTime.now().toString();
stringRedisTemplate.opsForValue().set(“key_” + now, now);
return now;
}
结果如下:
在这里,实际上很少直接使用 RedisTemplate<Object,Object> redisTemplate,一般是写 Redis 的配置类自定义 RedisTemplate,接下来就实现自定义 customRedisTemplate。
customRedisTemplate
@Configuration
public class RedisConfig {
/**
* 自定义 RedisTemplate
* @param connectionFactory
* @return
*/
@Bean
public RedisTemplate<String, Student> customRedisTemplate(
RedisConnectionFactory connectionFactory) {
RedisTemplate<String, Student> rt = new RedisTemplate<>();
// 实例化 Jackson 的序列化器
Jackson2JsonRedisSerializer<Student> serializer
= new Jackson2JsonRedisSerializer<Student>(Student.class);
// 设置 value 值的序列化器为 serializer
rt.setValueSerializer(serializer);
rt.setHashValueSerializer(serializer);
// 设置 key 键的序列化器为 serializer
rt.setKeySerializer(new StringRedisSerializer());
rt.setHashKeySerializer(new StringRedisSerializer());
// 设置 redis 连接工厂(线程安全的)
rt.setConnectionFactory(connectionFactory);
return rt;
}
}
测试自定义 RedisTemplate 的用例
@PostMapping(“/add”)
public String add(@RequestBody Student student) {
System.out.println(student);
customRedisTemplate.opsForValue().set(“key_” + student.getId(), student);
return “add success”;
}
启动 Spring Boot 并通过 Restlet 测试:
结果如下:
到此,简单的整合 Redis 已经成功。接下来是 cache 注解。