我正在创建Spring的RedisCache
类的近缓存扩展,本质上是添加了一个本地(例如咖啡因)缓存,该缓存在调用Redis之前已检查以保存网络旅行。
问题是,当前无法将我的自定义RedisNearCache
类注入RedisCacheManagerBuilder
类中,而无需复制+粘贴数据重做代码。
例如,DefaultRedisCacheWriter
是包私有的,这迫使我利用RedisCacheManagerBuilder
,后者的构造函数是私有的,并且具有以下构建方法:
public RedisCacheManager build() {
RedisCacheManager cm = new RedisCacheManager(cacheWriter, defaultCacheConfiguration, initialCaches,
allowInFlightCacheCreation);
cm.setTransactionAware(enableTransactions);
return cm;
}
RedisCacheManager本身仅允许创建RedisCache
实现:
protected RedisCache createRedisCache(String name, @Nullable RedisCacheConfiguration cacheConfig) {
return new RedisCache(name, cacheWriter, cacheConfig != null ? cacheConfig : defaultCacheConfig);
}
因此,除非复制整个RedisCacheManager
类并创建自己的RedisNearCache
,否则无法利用我的DefaultRedisCacheWriter
实现来创建RedisNearCacheManager
。
是否必须按设计复制并粘贴DefaultRedisCacheWriter
?有没有更好的方法来创建像这样的两层缓存结构?我尝试将CompositeCacheManager
与Caffeine和Redis一起使用,但是如果在Redis中找到了密钥,则密钥/值就永远不会插入Caffeine中(这很有意义,只是我想要的两层近乎高速缓存行为)。