导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
redis的自动配置,注入了两个用于方便操作的模板
@Configuration(proxyBeanMethods = false)
@ConditionalOnClass(RedisOperations.class)
@EnableConfigurationProperties(RedisProperties.class)
@Import({ LettuceConnectionConfiguration.class, JedisConnectionConfiguration.class })
public class RedisAutoConfiguration {
@Bean
@ConditionalOnMissingBean(name = "redisTemplate")
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory)
throws UnknownHostException {
RedisTemplate<Object, Object> template = new RedisTemplate<>();
template.setConnectionFactory(redisConnectionFactory);
return template;
}
@Bean
@ConditionalOnMissingBean
public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisConnectionFactory)
throws UnknownHostException {
StringRedisTemplate template = new StringRedisTemplate();
template.setConnectionFactory(redisConnectionFactory);
return template;
}
}
stringRedisTemplate 专门用来操作kv均为String的数据
@Test
public void test01(){
//stringRedisTemplate.opsForValue().append("TestValues","Hello");
System.out.println(stringRedisTemplate.opsForValue().get("TestValues"));
stringRedisTemplate.opsForList().leftPush("mylist","1");
stringRedisTemplate.opsForList().leftPush("mylist","2");
}
redisTemplate 可以用来操作kv为对象的数据
@Test
public void test02(){
Employee emp = employeeMapper.getEmpById(1);
//默认如果保存对象,使用jdk序列化机制,序列化后的数据被保存到redis中,可视化很差
redisTemplate.opsForValue().set("emp01",emp);
}
redis默认使用jdk的序列化器
自定义redis配置类
可以写一个redis 的配置类,自行注入redis模板
这里看一下redis的序列化接口,导入的依赖中有很多相关实现类,其中包括Json2Redis
(Ctrl + T查看)
@Configuration
public class MyRedisConfig {
@Bean
public RedisTemplate<Object, Employee> redisTemplate(RedisConnectionFactory redisConnectionFactory)
throws UnknownHostException {
RedisTemplate<Object, Employee> template = new RedisTemplate<>();
template.setConnectionFactory(redisConnectionFactory);
Jackson2JsonRedisSerializer<Employee> serializer = new Jackson2JsonRedisSerializer(Employee.class);
template.setDefaultSerializer(serializer);
return template;
}
}
测试类中改为自动注入,自定义的redisTemplate
成功存入redis