我使用的是redis缓存,面临的问题是:带整数键的映射被序列化为如下字符串:
"1":"AAAA","2":"BBB","3":"CCC"
我的配置如下:
@Bean
public RedisCacheConfiguration myCacheConfiguration()
{
return RedisCacheConfiguration.defaultCacheConfig()
.entryTtl(Duration.ZERO)
.disableCachingNullValues()
.serializeValuesWith(RedisSerializationContext.SerializationPair
.fromSerializer(new Jackson2JsonRedisSerializer<>(Map.class)));
}
@Bean
public CacheManager myCacheManager(RedisConnectionFactory redisConnectionFactory)
{
return RedisCacheManager.builder(redisConnectionFactory)
.cacheDefaults(myCacheConfiguration())
.transactionAware()
.build();
}
我试图将GenericJackson2JsonRedisSerializer传递给serializeValuesWith(),但它不起作用。
是否有任何方法将映射的整数键序列化/反序列化为数字?
最佳答案
Jackson2JsonRedisSerializer
和GenericJackson2JsonRedisSerializer
都允许使用自定义ObjectMapper
。
不熟悉redis,但似乎这是根据doc设计的自定义序列化方式:
设置自定义配置ObjectMapper
是进一步
控制JSON序列化过程。例如,扩展的SerializerFactory
可以配置为提供自定义序列化程序
对于特定类型。用于优化序列化的另一个选项
过程是在
序列化,在这种情况下,自定义配置的objectmapper是
没必要。