企业级java springcloud b2bc商城系统开源源码二次开发-hystrix 请求缓存
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 请求缓存相关推荐
- 企业级java springcloud b2bc商城系统开源源码二次开发-负载均衡策略...
简单轮询负载均衡 以轮询的方式依次将请求调度不同的服务器,即每次调度执行i=(i+1) mod n 文章来源 JAVA ssm b2b2c多用户商城系统源码 随机负载均衡 随机选择状态为UP的serv ...
- (十二)企业级java springcloud b2bc商城系统开源源码二次开发-断路器监控(Hystrix Dashboard)...
一.Hystrix Dashboard简介 在微服务架构中为例保证程序的可用性,防止程序出错导致网络阻塞,出现了断路器模型.断路器的状况反应了一个程序的可用性和健壮性,它是一个重要指标.Hystrix ...
- 企业级java springboot b2bc商城系统开源源码二次开发-(四)断路器(Hystrix)
在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用(RPC),在Spring Cloud可以用RestTemplate+Ribbon和Feign来调用.为了保证其高可用,单个服务 ...
- 企业级java springboot b2bc商城系统开源源码二次开发-云架构代码结构构建(五)...
上一篇介绍了<整合spring cloud云服务架构 - 企业分布式微服务云架构图>,本篇我们根据架构图进行代码的构建.根据微服务化设计思想,结合spring cloud一些优秀的项目,如 ...
- 企业级java b2bc商城系统开源源码二次开发(二十一)springboot集成JMS
构架工程 创建一个springboot工程,在其pom文件加入: 1 2 3 4 <dependency> <groupId>org.springframework.boot& ...
- java毕业设计汽车商城系统mybatis+源码+调试部署+系统+数据库+lw
java毕业设计汽车商城系统mybatis+源码+调试部署+系统+数据库+lw java毕业设计汽车商城系统mybatis+源码+调试部署+系统+数据库+lw 本源码技术栈: 项目架构:B/S架构 开 ...
- 2022全球20多款知名的Android刷机ROM镜像和Android系统开源源码(覆盖全球机型)
推荐阅读 Android10系统定制|frida逆向分析实战课程 2022全球20多款知名的Android刷机ROM镜像和Android系统开源源码(覆盖全球机型) 因此,您拥有一台Android设 ...
- 计算机毕业设计JAVA多特蒙德周边商城系统mybatis+源码+调试部署+系统+数据库+lw
计算机毕业设计JAVA多特蒙德周边商城系统mybatis+源码+调试部署+系统+数据库+lw 计算机毕业设计JAVA多特蒙德周边商城系统mybatis+源码+调试部署+系统+数据库+lw 本源码技术栈 ...
- JAVA 单商户商城系统 成熟源码 支持二开
三勾商城是开发友好的微信小程序商城,框架支持SAAS,支持发布 iOS + Android + 公众号 + H5 + 各种小程序(微信/支付宝/百度/头条/QQ/钉钉/淘宝)等多个平台,不可多得的二开 ...
最新文章
- Windows 安装 pytorch3d
- a律13折线pcm编码例题_a律13折线pcm编码例题
- 云服务器配置(jdk、tomcat、mysql)
- java.library.path在哪?
- Java深入 - Java虚拟机性能问题监控和排查
- c语言中的循环移位函数,C ++中循环移位(旋转)操作的最佳实践
- red hat linux 7.1 使用手册!,linux入门教材(Red Hat Linux 7.1)
- SQL 查询速度慢原因及优化方法(转载)
- DButils基本使用
- Oracle随机抽样sample使用说明
- 图解密码技术学习笔记
- Android利用jsoup爬虫爬网页数据(一)
- C语言学习笔记(kk-zkx)
- 解决maya导出FBX出现问题。
- 怀旧服服务器荣誉系统是啥,快人一步 争做大元帅 《魔兽世界》怀旧服荣誉系统浅析...
- 自动控制理论的发展历程
- 取之盈:html网页音乐代码大全
- java分为_Java分为三个版本:_______、_______和_______
- Ode45以及龙格-库塔算法
- PHP 实现小偷程序
热门文章
- 北京中医药大学等8所高校被世界医学院校名录除名,毕业生无法获取英美从医资格...
- 不同数据库中查询前几条记录的用法(SQL Server/Oracle/Postgresql)
- parted命令分区
- python数据可视化库 动态的_python --数据可视化(一)
- 70个python毕设项目_10 个最值得 Python 新人练手的有趣项目
- AWS — AWS Snow 系列
- OpenStack Nova 高性能虚拟机之 NUMA 架构亲和
- VMware 虚拟化编程(7) — VixDiskLib 虚拟磁盘库详解之三
- Linux_LAMP 最强大的动态网站解决方案
- Python_序列对象内置方法详解_String