我使用的是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(),但它不起作用。
是否有任何方法将映射的整数键序列化/反序列化为数字?

最佳答案

Jackson2JsonRedisSerializerGenericJackson2JsonRedisSerializer都允许使用自定义ObjectMapper
不熟悉redis,但似乎这是根据doc设计的自定义序列化方式:
设置自定义配置ObjectMapper是进一步
控制JSON序列化过程。例如,扩展的
SerializerFactory可以配置为提供自定义序列化程序
对于特定类型。用于优化序列化的另一个选项
过程是在
序列化,在这种情况下,自定义配置的objectmapper是
没必要。

07-24 18:30
查看更多