日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

【.NET Core项目实战-统一认证平台】第五章 网关篇-自定义缓存Redis

發(fā)布時(shí)間:2023/12/4 asp.net 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【.NET Core项目实战-统一认证平台】第五章 网关篇-自定义缓存Redis 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

上篇文章【.NET Core項(xiàng)目實(shí)戰(zhàn)-統(tǒng)一認(rèn)證平臺(tái)】第四章 網(wǎng)關(guān)篇-數(shù)據(jù)庫存儲(chǔ)配置(2)我們介紹了2種網(wǎng)關(guān)配置信息更新的方法和擴(kuò)展Mysql存儲(chǔ),本篇我們將介紹如何使用Redis來實(shí)現(xiàn)網(wǎng)關(guān)的所有緩存功能,用到的文檔及源碼將會(huì)在GitHub上開源,每篇的源代碼我將用分支的方式管理,本篇使用的分支為course3。
附文檔及源碼下載地址:[https://github.com/jinyancao/CtrAuthPlatform/tree/course3]

一、緩存介紹及選型

網(wǎng)關(guān)的一個(gè)重要的功能就是緩存,可以對(duì)一些不常更新的數(shù)據(jù)進(jìn)行緩存,減少后端服務(wù)開銷,默認(rèn)Ocelot實(shí)現(xiàn)的緩存為本地文件進(jìn)行緩存,無法達(dá)到生產(chǎn)環(huán)境大型應(yīng)用的需求,而且不支持分布式環(huán)境部署,所以我們需要一個(gè)滿足大型應(yīng)用和分布式環(huán)境部署的緩存方案。Redis應(yīng)該是當(dāng)前應(yīng)用最廣泛的緩存數(shù)據(jù)庫,支持5種存儲(chǔ)類型,滿足不同應(yīng)用的實(shí)現(xiàn),且支持分布式部署等特性,所以緩存我們決定使用Redis作為緩存實(shí)現(xiàn)。

本文將介紹使用CSRedisCore來實(shí)現(xiàn)Redis相關(guān)操作,至于為什么選擇CSRedisCore,可參考文章[.NET Core開發(fā)者的福音之玩轉(zhuǎn)Redis的又一傻瓜式神器推薦],里面詳細(xì)的介紹了各種Redis組件比較及高級(jí)應(yīng)用,并列出了不同組件的壓力測(cè)試對(duì)比,另外也附CSRedisCore作者交流QQ群:8578575,使用中有什么問題可以直接咨詢作者本人。

二、緩存擴(kuò)展實(shí)現(xiàn)

首先本地安裝Redis和管理工具Redis Desktop Manager,本文不介紹安裝過程,然后NuGet安裝?CSRedisCore,現(xiàn)在開始我們重寫IOcelotCache<T>的實(shí)現(xiàn),新建InRedisCache.cs文件。

實(shí)現(xiàn)所有緩存相關(guān)接口,是不是很優(yōu)雅呢?實(shí)現(xiàn)好緩存后,我們需要把我們現(xiàn)實(shí)的注入到網(wǎng)關(guān)里,在ServiceCollectionExtensions類中,修改注入方法。

奈斯,我們使用Redis實(shí)現(xiàn)緩存已經(jīng)全部完成,現(xiàn)在開始我們?cè)诰W(wǎng)關(guān)配置信息增加緩存來測(cè)試下,看緩存是否生效,并查看是否存儲(chǔ)在Redis里。

為了驗(yàn)證緩存是否生效,修改測(cè)試服務(wù)api/values/{id}代碼,增加服務(wù)器時(shí)間輸出。

增加新的測(cè)試路由腳本,然后增加緩存策略,緩存60秒,緩存分類test_ahphocelot

現(xiàn)在我們測(cè)試訪問網(wǎng)關(guān)地址http://localhost:7777/api/values/1,過幾十秒后繼續(xù)訪問,結(jié)果如下。

可以看出來,緩存已經(jīng)生效,1分鐘內(nèi)請(qǐng)求都不會(huì)路由到服務(wù)端,再查詢下redis緩存數(shù)據(jù),發(fā)現(xiàn)緩存信息已經(jīng)存在,然后使用Redis Desktop Manager查看Redis緩存信息是否存在,奈斯,已經(jīng)存在,說明已經(jīng)達(dá)到我們預(yù)期目的。

三、解決網(wǎng)關(guān)集群配置信息變更問題

前面幾篇已經(jīng)介紹了網(wǎng)關(guān)的數(shù)據(jù)庫存儲(chǔ),并介紹了網(wǎng)關(guān)的2種更新方式,但是如果網(wǎng)關(guān)集群部署時(shí),采用接口更新方式,無法直接更新所有集群端配置數(shù)據(jù),那如何實(shí)現(xiàn)集群配置信息一致呢?前面介紹了redis緩存,可以解決當(dāng)前遇到的問題,我們需要重寫內(nèi)部配置文件提取倉儲(chǔ)類,使用redis存儲(chǔ)。

我們首先使用redis實(shí)現(xiàn)IInternalConfigurationRepository接口,每次請(qǐng)求配置信息時(shí)直接從redis存儲(chǔ),避免單機(jī)緩存出現(xiàn)數(shù)據(jù)無法更新的情況。RedisInternalConfigurationRepository代碼如下。

redis實(shí)現(xiàn)后,然后在ServiceCollectionExtensions里增加接口實(shí)現(xiàn)注入。

builder.Services.AddSingleton<IInternalConfigurationRepository, RedisInternalConfigurationRepository>();

然后啟動(dòng)網(wǎng)關(guān)測(cè)試,可以發(fā)現(xiàn)網(wǎng)關(guān)配置信息已經(jīng)使用redis緩存了,可以解決集群部署后無法同步更新問題。

四、如何清除緩存記錄

實(shí)際項(xiàng)目使用過程中,可能會(huì)遇到需要立即清除緩存數(shù)據(jù),那如何實(shí)現(xiàn)從網(wǎng)關(guān)清除緩存數(shù)據(jù)呢?在上篇中我們介紹了接口更新網(wǎng)關(guān)配置的說明,緩存的更新也是使用接口的方式進(jìn)行刪除,詳細(xì)代碼如下。

我們可以先拉去授權(quán),獲取授權(quán)方式請(qǐng)參考上一篇,然后使用HTTP DELETE方式,請(qǐng)求刪除地址,比如刪除前面的測(cè)試緩存接口,可以請(qǐng)求http://localhost:7777/CtrOcelot/outputcache/test_ahphocelot地址進(jìn)行刪除,可以使用PostMan進(jìn)行測(cè)試,測(cè)試結(jié)果如下。

執(zhí)行成功后可以刪除指定的緩存記錄,且立即生效,完美的解決了我們問題。

五、總結(jié)及預(yù)告

本篇我們介紹了使用redis緩存來重寫網(wǎng)關(guān)的所有緩存模塊,并把網(wǎng)關(guān)配置信息也存儲(chǔ)到redis里,來解決集群部署的問題,如果想清理緩存數(shù)據(jù),通過網(wǎng)關(guān)指定的授權(quán)接口即可完成,完全具備了網(wǎng)關(guān)的緩存的相關(guān)模塊的需求。

下一篇開始我們開始介紹針對(duì)不同客戶端設(shè)置不同的權(quán)限來實(shí)現(xiàn)自定義認(rèn)證,敬請(qǐng)期待,后面的課程會(huì)越來越精彩,也希望大家多多支持。

相關(guān)文章:

  • AspNetCore中使用Ocelot之 IdentityServer4

  • Ocelot-基于.NET Core的開源網(wǎng)關(guān)實(shí)現(xiàn)

  • .NET Core微服務(wù)之基于Ocelot+IdentityServer實(shí)現(xiàn)統(tǒng)一驗(yàn)證與授權(quán)

  • Swagger如何訪問Ocelot中帶權(quán)限驗(yàn)證的API

  • Ocelot.JwtAuthorize:一個(gè)基于網(wǎng)關(guān)的Jwt驗(yàn)證包

  • .NET Core微服務(wù)之基于Ocelot實(shí)現(xiàn)API網(wǎng)關(guān)服務(wù)

  • .NET Core微服務(wù)之基于Ocelot實(shí)現(xiàn)API網(wǎng)關(guān)服務(wù)(續(xù))

  • .NET微服務(wù)體系結(jié)構(gòu)中為什么使用Ocelot實(shí)現(xiàn)API網(wǎng)關(guān)

  • Ocelot簡易教程(一)之Ocelot是什么

  • Ocelot簡易教程(二)之快速開始1

  • Ocelot簡易教程(二)之快速開始2

  • Ocelot簡易教程(三)之主要特性及路由詳解

  • Ocelot簡易教程(四)之請(qǐng)求聚合以及服務(wù)發(fā)現(xiàn)

  • Ocelot簡易教程(五)之集成IdentityServer認(rèn)證以及授權(quán)

  • Ocelot簡易教程(六)之重寫配置文件存儲(chǔ)方式并優(yōu)化響應(yīng)數(shù)據(jù)

  • Ocelot簡易教程(七)之配置文件數(shù)據(jù)庫存儲(chǔ)插件源碼解析

  • ASP.NET Core中Ocelot的使用:API網(wǎng)關(guān)的應(yīng)用

  • ASP.NET Core中Ocelot的使用:基于Spring Cloud Netflix Eureka的動(dòng)態(tài)路由

  • ASP.NET Core中Ocelot的使用:基于服務(wù)發(fā)現(xiàn)的負(fù)載均衡

  • 【.NET Core項(xiàng)目實(shí)戰(zhàn)-統(tǒng)一認(rèn)證平臺(tái)】第一章 功能及架構(gòu)分析

  • 定制Ocelot來滿足需求

  • 【.NET Core項(xiàng)目實(shí)戰(zhàn)-統(tǒng)一認(rèn)證平臺(tái)】第三章 網(wǎng)關(guān)篇-數(shù)據(jù)庫存儲(chǔ)配置(1)

  • 【.NET Core項(xiàng)目實(shí)戰(zhàn)-統(tǒng)一認(rèn)證平臺(tái)】第四章 網(wǎng)關(guān)篇-數(shù)據(jù)庫存儲(chǔ)配置(2)

原文地址: https://www.cnblogs.com/jackcao/p/9960788.html


.NET社區(qū)新聞,深度好文,歡迎訪問公眾號(hào)文章匯總 http://www.csharpkit.com

總結(jié)

以上是生活随笔為你收集整理的【.NET Core项目实战-统一认证平台】第五章 网关篇-自定义缓存Redis的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。