hystrix支持将一个请求结果缓存起来,下一个具有相同key的请求将直接从缓存中取出结果,减少请求开销。要使用该功能必须管理HystrixRequestContext,如果请求B要用到请求A的结果缓存,A和B必须同处一个context。通过HystrixRequestContext.initializeContext()和context.shutdown()可以构建一个context,这两条语句间的所有请求都处于同一个context,当然这个管理过程可以通过自定义的filter来实现。

Hystrix请求缓存注解
@CacheResult 加入该注解的方法将开启请求缓存,默认情况下该方法的所有参数作为缓存的key,也就是说只有该方法的所有参数都一致时才会走缓存。


@Service
public class UserCacheService {@Autowiredprivate 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 多用户商城系统来源

企业级java springcloud b2bc商城系统开源源码二次开发-hystrix 请求缓存相关推荐

  1. 企业级java springcloud b2bc商城系统开源源码二次开发-负载均衡策略...

    简单轮询负载均衡 以轮询的方式依次将请求调度不同的服务器,即每次调度执行i=(i+1) mod n 文章来源 JAVA ssm b2b2c多用户商城系统源码 随机负载均衡 随机选择状态为UP的serv ...

  2. (十二)企业级java springcloud b2bc商城系统开源源码二次开发-断路器监控(Hystrix Dashboard)...

    一.Hystrix Dashboard简介 在微服务架构中为例保证程序的可用性,防止程序出错导致网络阻塞,出现了断路器模型.断路器的状况反应了一个程序的可用性和健壮性,它是一个重要指标.Hystrix ...

  3. 企业级java springboot b2bc商城系统开源源码二次开发-(四)断路器(Hystrix)

    在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用(RPC),在Spring Cloud可以用RestTemplate+Ribbon和Feign来调用.为了保证其高可用,单个服务 ...

  4. 企业级java springboot b2bc商城系统开源源码二次开发-云架构代码结构构建(五)...

    上一篇介绍了<整合spring cloud云服务架构 - 企业分布式微服务云架构图>,本篇我们根据架构图进行代码的构建.根据微服务化设计思想,结合spring cloud一些优秀的项目,如 ...

  5. 企业级java b2bc商城系统开源源码二次开发(二十一)springboot集成JMS

    构架工程 创建一个springboot工程,在其pom文件加入: 1 2 3 4 <dependency> <groupId>org.springframework.boot& ...

  6. java毕业设计汽车商城系统mybatis+源码+调试部署+系统+数据库+lw

    java毕业设计汽车商城系统mybatis+源码+调试部署+系统+数据库+lw java毕业设计汽车商城系统mybatis+源码+调试部署+系统+数据库+lw 本源码技术栈: 项目架构:B/S架构 开 ...

  7. 2022全球20多款知名的Android刷机ROM镜像和Android系统开源源码(覆盖全球机型)

    推荐阅读 ​Android10系统定制|frida逆向分析实战课程 2022全球20多款知名的Android刷机ROM镜像和Android系统开源源码(覆盖全球机型) 因此,您拥有一台Android设 ...

  8. 计算机毕业设计JAVA多特蒙德周边商城系统mybatis+源码+调试部署+系统+数据库+lw

    计算机毕业设计JAVA多特蒙德周边商城系统mybatis+源码+调试部署+系统+数据库+lw 计算机毕业设计JAVA多特蒙德周边商城系统mybatis+源码+调试部署+系统+数据库+lw 本源码技术栈 ...

  9. JAVA 单商户商城系统 成熟源码 支持二开

    三勾商城是开发友好的微信小程序商城,框架支持SAAS,支持发布 iOS + Android + 公众号 + H5 + 各种小程序(微信/支付宝/百度/头条/QQ/钉钉/淘宝)等多个平台,不可多得的二开 ...

最新文章

  1. Windows 安装 pytorch3d
  2. a律13折线pcm编码例题_a律13折线pcm编码例题
  3. 云服务器配置(jdk、tomcat、mysql)
  4. java.library.path在哪?
  5. Java深入 - Java虚拟机性能问题监控和排查
  6. c语言中的循环移位函数,C ++中循环移位(旋转)操作的最佳实践
  7. red hat linux 7.1 使用手册!,linux入门教材(Red Hat Linux 7.1)
  8. SQL 查询速度慢原因及优化方法(转载)
  9. DButils基本使用
  10. Oracle随机抽样sample使用说明
  11. 图解密码技术学习笔记
  12. Android利用jsoup爬虫爬网页数据(一)
  13. C语言学习笔记(kk-zkx)
  14. 解决maya导出FBX出现问题。
  15. 怀旧服服务器荣誉系统是啥,快人一步 争做大元帅 《魔兽世界》怀旧服荣誉系统浅析...
  16. 自动控制理论的发展历程
  17. 取之盈:html网页音乐代码大全
  18. java分为_Java分为三个版本:_______、_______和_______
  19. Ode45以及龙格-库塔算法
  20. PHP 实现小偷程序

热门文章

  1. 北京中医药大学等8所高校被世界医学院校名录除名,毕业生无法获取英美从医资格...
  2. 不同数据库中查询前几条记录的用法(SQL Server/Oracle/Postgresql)
  3. parted命令分区
  4. python数据可视化库 动态的_python --数据可视化(一)
  5. 70个python毕设项目_10 个最值得 Python 新人练手的有趣项目
  6. AWS — AWS Snow 系列
  7. OpenStack Nova 高性能虚拟机之 NUMA 架构亲和
  8. VMware 虚拟化编程(7) — VixDiskLib 虚拟磁盘库详解之三
  9. Linux_LAMP 最强大的动态网站解决方案
  10. Python_序列对象内置方法详解_String