国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Java > 正文

詳解spring cloud hystrix請求緩存(request cache)

2024-07-14 08:40:56
字體:
來源:轉載
供稿:網友

hystrix支持將一個請求結果緩存起來,下一個具有相同key的請求將直接從緩存中取出結果,減少請求開銷。要使用該功能必須管理HystrixRequestContext,如果請求B要用到請求A的結果緩存,A和B必須同處一個context。通過HystrixRequestContext.initializeContext()和context.shutdown()可以構建一個context,這兩條語句間的所有請求都處于同一個context,當然這個管理過程可以通過自定義的filter來實現,參考上一篇文章http://www.survivalescaperooms.com/kaifa/java/310828.html

Hystrix請求緩存注解

@CacheResult 加入該注解的方法將開啟請求緩存,默認情況下該方法的所有參數作為緩存的key,也就是說只有該方法的所有參數都一致時才會走緩存。

@Servicepublic 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時,此方法的緩存將刪除。

完整版代碼請參考:https://github.com/jingangwang/micro-service

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 景洪市| 吉木乃县| 金寨县| 汨罗市| 铜山县| 兖州市| 开鲁县| 合川市| 潞城市| 徐闻县| 仁怀市| 称多县| 江永县| 尉犁县| 平乡县| 蓬莱市| 桦甸市| 巫溪县| 凤阳县| 临西县| 通州区| 中方县| 环江| 榕江县| 武功县| 那坡县| 深泽县| 武鸣县| 台山市| 湖南省| 城口县| 祁东县| 宜黄县| 盱眙县| 昆明市| 临沂市| 玉田县| 宜兰市| 开原市| 固原市| 汉寿县|