设为首页 加入收藏

TOP

【.NET Core项目实战-统一认证平台】第十五章 网关篇-使用二级缓存提升性能(六)
2019-09-17 18:23:48 】 浏览:97
Tags:.NET Core 项目 实战 统一 认证 平台 十五 网关 使用 二级 提升 性能
tions.RedisOcelotKeyPrefix, "", key); var fileconfig = await _fileConfigurationRepository.Get(); var internalConfig = await _internalConfigurationCreator.Create(fileconfig.Data); var config = (InternalConfiguration)internalConfig.Data; if (_options.ClusterEnvironment) { RedisHelper.Set(key, config); //加入redis缓存 RedisHelper.Publish(key, config.ToJson()); //发布事件 } else { _cache.Remove(key); } } /// <summary> /// 删除路由配合的缓存信息 /// </summary> /// <param name="region">区域</param> /// <param name="downurl">下端路由</param> /// <returns></returns> [HttpPost] [Route("Response")] public async Task DeleteResponseCache(string region,string downurl) { var key = CzarOcelotHelper.GetKey(_options.RedisOcelotKeyPrefix, region, downurl); if (_options.ClusterEnvironment) { await RedisHelper.DelAsync(key); RedisHelper.Publish(key, "");//发布时间 } else { _cache.Remove(key); } } /// <summary> /// 更新客户端限流规则缓存 /// </summary> /// <param name="clientid">客户端ID</param> /// <param name="path">路由模板</param> /// <returns></returns> [HttpPost] [Route("RateLimitRule")] public async Task UpdateRateLimitRuleCache(string clientid, string path) { var region = CzarCacheRegion.RateLimitRuleModelRegion; var key = clientid + path; key = CzarOcelotHelper.GetKey(_options.RedisOcelotKeyPrefix, region, key); var result = await _clientRateLimitRepository.CheckClientRateLimitAsync(clientid, path); var data = new RateLimitRuleModel() { RateLimit = result.RateLimit, rateLimitOptions = result.rateLimitOptions }; if (_options.ClusterEnvironment) { RedisHelper.Set(key, data); //加入redis缓存 RedisHelper.Publish(key, data.ToJson()); //发布事件 } else { _cache.Remove(key); } } /// <summary> /// 更新客户端是否开启限流缓存 /// </summary> /// <param name="path"></param> /// <returns></returns> [HttpPost] [Route("ClientRole")] public async Task UpdateClientRoleCache(string path) { var region = CzarCacheRegion.ClientRoleModelRegion; var key = path; key = CzarOcelotHelper.GetKey(_options.RedisOcelotKeyPrefix, region, key); var result = await _clientRateLimitRepository.CheckReRouteRuleAsync(path); var data = new ClientRoleModel() { CacheTime = DateTime.Now, Role = result }; if (_options.ClusterEnvironment) { RedisHelper.Set(key, data); //加入redis缓存 RedisHelper.Publish(key, data.ToJson()); //发布事件 } else { _cache.Remove(key); } } /// <summary> /// 更新呢客户端路由白名单缓存 /// </summary> /// <param name="clientid"></param> /// <param name="path"></param> /// <returns></returns> [HttpPost] [Route("ClientReRouteWhiteList")] public async Task UpdateClientReRouteWhiteListCache(string clientid, string path) { var region = CzarCacheRegion.ClientReRouteWhiteListRegion; var key = clientid + path; key = CzarOcelotHelper.GetKey(_options.RedisOcelotKeyPrefix, region, key); var result = await _clientRateLimitRepository.CheckClientReRouteWhiteListAsync(clientid, path); var data = new ClientRoleModel() { CacheTime = Date
首页 上一页 3 4 5 6 下一页 尾页 6/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇延时执行函数:前浪死在沙滩上 下一篇IIS下网站对options请求直接返回4..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目