2015-12-18 52 views
2

我正在使用基于Netflix OSS体系结构的Spring云。我需要缓存使用Get-Set-Get模式的一种方法的结果。Netflix hystrix共享请求缓存

public class UserService {  
    @CacheResult 
    @HystrixCommand 
    public User getUserById(@CacheKey String id) { // GET 
     return storage.get(id); 
    } 

    @CacheRemove(commandKey = "getUserById") 
    @HystrixCommand 
    public void update(@CacheKey("id") User user) { // SET 
     storage.put(user.getId(), user); 
    } 
}  

现在我的问题很简单。如果我有多个此服务的实例正在运行,我需要知道我是否可以拥有分布式缓存?如果是的话,如果尺寸增大,我可以使用类似Redis的东西吗?

回答

0

是男人在看到docs

如何示例实现的:

public class UserService extends HystrixCommand<Boolean> { 
    private final User user; 

    public User getUserById(String id) { 
     super(HystrixCommandGroupKey.Factory.asKey("AnyUser")); 
     user = storage.get(id); 
     return user; 
    } 

    public void update(User user) { // SET 
     super(HystrixCommandGroupKey.Factory.asKey("AnyUser")); 
     this.user = user; 
     storage.put(user.getId(), user); 
    } 

    @Override 
    protected Boolean run() { 
     return user == null || (user != null && user.id == 0); 
    } 

    @Override 
    protected String getCacheKey() {    
     return (user != null) ?String.valueOf(user.id):""; 
    } 
}