Spring 数据存储 Redis - 使用多个缓存

Spring Data Store Redis - Use Multiple Caches

我有一个由两个网络服务器、两个 redis 缓存和一个后端存储组成的应用程序。两个网络服务器和两个 redis 缓存位于西海岸和东海岸,以优化性能。到目前为止,我已经能够从我的网络服务器连接到我的第一个缓存,并连接到我的后端存储。但我正在寻找一种使用 Spring 将数据推送到两个 redis 缓存的方法。我已按如下方式配置我的两个 RedisManagers。

@Bean(name="CacheManager1")
public RedisCacheManager cacheManager() {
    RedisCacheManager redisCacheManager = new RedisCacheManager(redisTemplate());
    redisCacheManager.setTransactionAware(true);
    redisCacheManager.setLoadRemoteCachesOnStartup(true);
    redisCacheManager.setUsePrefix(true);
    return redisCacheManager;
}

@Bean(name="CacheManager2")
public RedisCacheManager cacheManager2() {
    RedisCacheManager redisCacheManager = new RedisCacheManager(redisTemplate2());
    redisCacheManager.setTransactionAware(true);
    redisCacheManager.setLoadRemoteCachesOnStartup(true);
    redisCacheManager.setUsePrefix(true);
    return redisCacheManager;
}

现在我已经尝试了一些随机的方法来缓存到这两个地方,但是这种特殊的方法失败了 "Cacheable is not a Repeatable Annotation"

@Cacheable(cacheManager = "CacheManager1", value = "activityProfile", key = "#id")
@Cacheable(cacheManager = "CacheManager2", value = "activityProfile", key = "#id")
public ActivityProfile findActivityProfile(String id) {
    return activityProfileRepository.findOne(id);
}

有什么简单的方法可以使用 Spring 吗?

Dan Ciborowski - 看这里...

http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#cache-annotations-caching

Spring 参考解释了如何组合多个 Spring Cache Abstraction 注释(例如 @Cacheable@CachePut 等)使用@Caching.

因此对于可缓存,您可以执行以下操作。

    @Caching(cacheable = {@Cacheable("CacheManager1"), @Cacheable("CacheManager2")})
    public ActivityProfile findActivityProfile(String id) {
        return activityProfileRepository.findOne(id);
    }