spring-session-redis 面对redis配置序列化无效
时间: 2023-09-09 22:10:30 浏览: 183
如果您在使用 Spring Session Redis 时遇到了配置序列化无效的问题,可能是因为 RedisTemplate 中使用的序列化器与 Spring Session Redis 中使用的不同。为了解决这个问题,您可以尝试以下步骤:
1. 确认 RedisTemplate 中使用的序列化器是否与 Spring Session Redis 中使用的一致。您可以在 RedisTemplate 中设置序列化器的方式如下:
```java
RedisTemplate redisTemplate = new RedisTemplate();
redisTemplate.setConnectionFactory(connectionFactory);
redisTemplate.setDefaultSerializer(new GenericJackson2JsonRedisSerializer());
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
redisTemplate.afterPropertiesSet();
```
2. 如果 RedisTemplate 中使用的序列化器与 Spring Session Redis 中使用的不同,可以尝试在 Spring Session Redis 的配置中指定使用的序列化器:
```yaml
spring:
session:
store-type: redis
redis:
namespace: myapp
flush-mode: on_save
cleanup-cron: '0 * * * * *'
serializer: jackson
```
3. 如果仍然无法解决问题,您可以尝试自定义 RedisTemplate,并将其注入到 Spring Session Redis 中:
```java
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory);
redisTemplate.setDefaultSerializer(new GenericJackson2JsonRedisSerializer());
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
redisTemplate.afterPropertiesSet();
return redisTemplate;
}
@Bean
public RedisOperationsSessionRepository sessionRepository(RedisTemplate<String, Object> redisTemplate) {
return new RedisOperationsSessionRepository(redisTemplate);
}
}
```
希望这些步骤可以帮助您解决问题。
阅读全文