1、添加redis的场景启动器依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2、编写application.yml配置
![]()
3、测试使用redisTemplate和StringRedisTemplate
@Autowired
RedisTemplate redisTemplate;
@Autowired
StringRedisTemplate stringRedisTemplate;
@Autowired
RedisTemplate<Object, Object> myRedisTemplate;
@Test
void test() {
//stringRedisTemplate.opsForValue().set("msg","hello,word");
Employee empId = employeeService.getEmpId(1);
myRedisTemplate.opsForValue().set("emp-01",empId);
}
4、编写自定义的redisTemplate,用Json序列化保存数据到redis 的配置类
@Configuration
public class MyRedisConfig {
@Bean
public RedisTemplate<Object, Employee> empRedisTemplate(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;
}
@Bean
public RedisTemplate<Object, Department> deptRedisTemplate(RedisConnectionFactory redisConnectionFactory)
throws UnknownHostException {
RedisTemplate<Object, Department> template = new RedisTemplate<>();
template.setConnectionFactory(redisConnectionFactory);
Jackson2JsonRedisSerializer<Department> serializer = new Jackson2JsonRedisSerializer(Department.class);
template.setDefaultSerializer(serializer);
return template;
}
@Primary
@Bean
public CacheManager empCustomizeCacheManager(RedisTemplate<Object, Employee> empRedisTemplate) {
RedisCacheWriter redisCacheWriter = RedisCacheWriter.nonLockingRedisCacheWriter(Objects.requireNonNull(empRedisTemplate.getConnectionFactory()));
Jackson2JsonRedisSerializer<Employee> serializer = new Jackson2JsonRedisSerializer<>(Employee.class);
RedisSerializationContext<Employee, Employee> serializationContext = RedisSerializationContext.fromSerializer(serializer);
RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig().serializeValuesWith(serializationContext.getValueSerializationPair());
return new RedisCacheManager(redisCacheWriter,redisCacheConfiguration);
}
@Bean
public CacheManager deptCustomizeCacheManager(RedisTemplate<Object, Department> deptRedisTemplate) {
RedisCacheWriter redisCacheWriter = RedisCacheWriter.nonLockingRedisCacheWriter(Objects.requireNonNull(deptRedisTemplate.getConnectionFactory()));
Jackson2JsonRedisSerializer<Department> serializer = new Jackson2JsonRedisSerializer<>(Department.class);
RedisSerializationContext<Department, Department> serializationContext = RedisSerializationContext.fromSerializer(serializer);
RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig().serializeValuesWith(serializationContext.getValueSerializationPair());
return new RedisCacheManager(redisCacheWriter,redisCacheConfiguration);
}
6、如果将Java对象保存到redis中,需要将这个实体类实现序列化
public class Employee implements Serializable
public class Department implements Serializable {
7、在调用缓存的Service的时候,必须指定用的是哪个缓存管理器
![]()