将RedisCacheManagerBuilder与自定义RedisCache结合使用

时间:2020-05-15 23:07:32

标签: spring-boot spring-data-redis

我正在创建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中(这很有意义,只是我想要的两层近乎高速缓存行为)。

0 个答案:

没有答案