2015-12-18 80 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):""; 
    } 
}