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注解。