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;
}
}

@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;
}
}

浙公网安备 33010602011771号