【发布时间】:2022-01-31 02:10:26
【问题描述】:
我正在使用使用 Redis 作为缓存管理器的 Spring Data Cache。配置如下:
return RedisCacheManager.builder(redisConnectionFactory)
.cacheDefaults(
RedisCacheConfiguration.defaultCacheConfig()
.serializeKeysWith(SerializationPair.fromSerializer(RedisSerializer.string()))
.serializeValuesWith(SerializationPair.fromSerializer(RedisSerializer.json()))
)
.build()
让我们想象一个使用spring数据缓存的非常幼稚的例子:
@Cacheable(...)
MyPOJO compute() { ... }
但是,RedisSerializer.json() 确实是 GenericJackson2JsonRedisSerializer。因此,恕我直言,它将存储{"hello":"world","@class":"com.my.name.some.package.MyPOJO"} 之类的内容。 @class: ... 部分很长,浪费了 Redis 中的宝贵内存。此外,恕我直言,Spring Data Cache 应该足够聪明,能够意识到值类型确实是 MyPOJO,因此它不需要存储 "@class"。
因此我的问题是:如何避免在 Spring Data Cache + Redis CacheManager 中将类名存储在浪费大量空间的序列化 JSON 中?
感谢您的任何建议!
【问题讨论】:
标签: java spring redis spring-data spring-cache