我有一个由两个网络服务器、两个 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 - 看这里...
Spring 引用解释了如何组合多个 Spring Cache Abstraction使用 @Caching
的注释(例如 @Cacheable
、@CachePut
等)。
因此对于可缓存,您可以执行以下操作。
@Caching(cacheable = {@Cacheable("CacheManager1"), @Cacheable("CacheManager2")})
public ActivityProfile findActivityProfile(String id) {
return activityProfileRepository.findOne(id);
}
关于java - Spring Data Store Redis——使用多个缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41401484/