SpringBoot学习之配置Redis

1.pom.xml中操作redis需要引入的包

2.appliction.properties中配置redis信息

3.创建redis的java配置类

4.实际代码中调用

 

2025年3月27日更新:关于SpringBoot3.0整合Redis序列化配置Jackson2JsonRedisSerializer的问题

SpringBoot3.0版本后,弃用了setObjectMapper(objectMapper),而是改为了new Jackson2JsonRedisSerializer<>(objectMapper, Object.class):代码如下

@Configuration
public class RedisConfig {

@Bean("redisTemplate")
@Scope("prototype")
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {

RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory);

ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
objectMapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL);
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(objectMapper, Object.class);

redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);

return redisTemplate;
}
}

image

 

@Configuration
public class RedisConfig {

/**
* SpringBoot4.0中配置redisTemplate
*/
@Bean("redisTemplate")
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {

RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(factory);

/**
* ObjectMapper对象映射器, 是Jackson序列化和反序列化JSON和Java对象的核心类,提供了许多用于定制序列化和反序列化的方法和配置选项。
* SpringBoot3.x中Jackson版本是2, 所以ObjectMapper通过new ObjectMapper来实现的,
* SpringBoot4.x中Jackson版本是3, 所以ObjectMapper通过JsonMapper.builder()机制来实现
* ObjectMapper的readValue方法,可以把JSON字符串转换为Java对象
* ObjectMapper的writeValue方法,可以将Java对象序列化为JSON
*/
ObjectMapper mapper = JsonMapper.builder().enable(SerializationFeature.INDENT_OUTPUT).build();

GenericJacksonJsonRedisSerializer jsonRedisSerializer = new GenericJacksonJsonRedisSerializer(mapper);
/**
* 设置redis中key和value的序列规则
* key:统一设为string
* value: 设为json类型
*/
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(jsonRedisSerializer);
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
redisTemplate.setHashKeySerializer(jsonRedisSerializer);

return redisTemplate;
}
}
posted @ 2021-11-29 13:45  狗狗听话  阅读(278)  评论(0)    收藏  举报