企业java春季云b2bc商城系统开源二次开发-histrix请求缓存
浏览:681 次

Hystrix支持缓存请求的结果。具有相同密钥的下一个请求将直接从缓存中获取结果,从而减少请求开销。要使用此功能,必须管理HystrixRequestContext。如果请求B需要使用请求A的结果缓存,则A和B必须在同一上下文中。通过HystrixRequestContext。initializeContext()和contextShutdown()可以构建上下文。这两个语句之间的所有请求都在同一上下文中。当然,这个管理过程可以通过用户定义的过滤器来实现。
对于大型企业需要JAVA Spring Cloud分布式微服务云的B2B2C电子商务平台的源代码,请添加Penguin:2147775633
Hystrix请求缓存注释
@CacheResult添加此注释的方法将启用请求缓存。默认情况下,此方法的所有参数都用作缓存的键。也就是说,只有当该方法的所有参数一致时,缓存才会运行。
@服务
公共类UserCacheService{
@自动连线
私有用户FeignClient用户Feign客户端;
/**
*@HystrixCommand Enabled的RequestCache控制是否支持缓存
*即使requestCache,也只能缓存@CacheResult。enabled=真
*@param id用户id
*@return指定的用户
*/
@缓存结果
@HystrixCommand(命令属性={

@HystrixProperty(名称=“requestCache.enabled”,值=“true”)
})
公共用户findUserById(整数id){
return userFeignClient.findUserById(id);
}
}
如果requestCache。enabled设置为false,则即使添加了@CacheResult,缓存也不会工作。
@CacheKey可以通过此注释指定缓存的密钥
@缓存结果
@HystrixCommand(命令属性={
@HystrixProperty(名称=“requestCache.enabled”,值=“true”)
})
公共用户findUserByIdAndName(@CacheKey整数id,字符串名称){
返回userFeignClient.findUserById(id);
}
在上面的代码中,我们使用@CacheKey修改了id字段,这意味着默认情况下将缓存具有相同id的请求,而不考虑name字段。如果指定@CacheResult的cacheKeyMethod属性,则@CacheKey注释无效

@CacheRemove此注释用于使缓存无效
/**
*指定在通过@CacheRemove注释调用findUserById时删除此方法的缓存
*@param id用户id
*@param name用户名
*@return指定的用户
*/
@缓存结果
@缓存删除(commandKey=“findUserById”)
@HystrixCommand(命令属性={
@HystrixProperty(名称=“requestCache.enabled”,值=“true”)
})
公共用户findUserByIdAndName2(@CacheKey整数id,字符串名称){
return userFeignClient.findUserById(id);
}
上面的代码指定@CacheRemove的属性commandKey的值为findUserById,当调用findUserById时,该值用于删除此方法的缓存。