1. 程式人生 > >企業級java springcloud b2bc商城系統開源原始碼二次開發-hystrix 請求快取

企業級java springcloud b2bc商城系統開源原始碼二次開發-hystrix 請求快取

hystrix支援將一個請求結果快取起來,下一個具有相同key的請求將直接從快取中取出結果,減少請求開銷。要使用該功能必須管理HystrixRequestContext,如果請求B要用到請求A的結果快取,A和B必須同處一個context。通過HystrixRequestContext.initializeContext()和context.shutdown()可以構建一個context,這兩條語句間的所有請求都處於同一個context,當然這個管理過程可以通過自定義的filter來實現。

需要JAVA Spring Cloud大型企業分散式微服務雲構建的B2B2C電子商務平臺原始碼請加企鵝求求 :二一四七七七五六三三

Hystrix請求快取註解
@CacheResult 加入該註解的方法將開啟請求快取,預設情況下該方法的所有引數作為快取的key,也就是說只有該方法的所有引數都一致時才會走快取。

@Service
public class UserCacheService {
    @Autowired
    private UserFeignClient userFeignClient;

    /**
     * @HystrixCommand 的requestCache.enabled 可控制是否支援快取
     * 只有加了@CacheResult才能快取,即使requestCache.enabled=true
     * @param id    使用者id
     * @return  指定的使用者
     */
    @CacheResult
    @HystrixCommand(commandProperties = {
            @HystrixProperty(name="requestCache.enabled",value = "true")
    })
    public User findUserById(Integer id){
        return  userFeignClient.findUserById(id);
    }
}

如果requestCache.enabled設定為false,即使加了@CacheResult,快取也不起作用。

@CacheKey 通過該註解可以指定快取的key

 @CacheResult
    @HystrixCommand(commandProperties = {
            @HystrixProperty(name="requestCache.enabled",value = "true")
    })
    public User findUserByIdAndName(@CacheKey Integer id,String name){
        return  userFeignClient.findUserById(id);
    }

上面的程式碼我們用@CacheKey修飾了id欄位,說明只要id相同的請求預設都會走快取,與name欄位無關,如果我們指定了@CacheResult的cacheKeyMethod屬性,則@CacheKey註解無效

@CacheRemove 該註解的作用就是使快取失效

/**
     * 通過@CacheRemove 註解指定當呼叫findUserById時將此方法的快取刪除
     * @param id    使用者id
     * @param name  使用者姓名
     * @return  指定的使用者
     */
    @CacheResult
    @CacheRemove(commandKey = "findUserById")
    @HystrixCommand(commandProperties = {
            @HystrixProperty(name="requestCache.enabled",value = "true")
    })
    public User findUserByIdAndName2(@CacheKey Integer id,String name){
        return  userFeignClient.findUserById(id);
    }

以上程式碼指定了@CacheRemove的屬性commandKey的值為findUserById,作用就是當呼叫findUserById時,此方法的快取將刪除。

java springboot b2b2c shop 多使用者商城系統原始碼