.Net 性能優化--緩存,主要有內存緩存,分佈式緩存,http緩存
分佈式緩存
接着上篇的.Net 性能優化--緩存--內存緩存的講,如有不清晰的地方請參考上篇文章.Net 性能優化--緩存--內存緩存
上上篇的.Net 性能優化--緩存--內存緩存說的是使用asp.net core 自帶的擴展 Microsoft.Extensions.Caching.Memory來進行緩存的處理,
IMemoryCache緩存處理對於單個應該用程序是很方便,但是對於集羣的話就存在一個致命的問題,就是各個集羣之間無法相互訪問,同時一旦應用程序關閉,那麼緩存全部就都沒有了,
爲了解決這個問題我們引出了分佈式緩存,那麼本篇主要使用分佈式來處理緩存,對於分佈式緩存有2種,一是redis 緩存,二是sqlserver 緩存,上篇講了分佈式-redis緩存,本篇講分佈式-sqlserver緩存
分佈式-sqlserver緩存
1、使用NuGet添加項目引用 Microsoft.Extensions.Caching.SqlServer
2、在Startup中註冊服務,如下:
3、在HomeController中添加如下內容:
4、在Privacy.cshtml添加如下內容
5、創建一個sqlserver 數據庫的表,這個表用來存儲sqlserver 緩存的,可以手動去創建,也可以使用sql-cache
工具去創建(建議使用工具,本文使用的sql-cache
工具),
要使用sql-cache
工具,就要先在電腦中安裝了sql-cache
工具,安裝sql-cache
工具命令如下:
win+ R ,打開cmd 輸入:dotnet tool install --global dotnet-sql-cache --version 3.1.1 dotnet全局 安裝指定版本的 sql-cache工具,
注意:上述雖然安裝成功了,但是提示 :工具目錄 “C:\Users\Administrator\.dotnet\tools” 目前不在PATH環境變量中,
接下來需要卸載重新安裝以及設置環境變量
由於本作者使用的是vs2019最新版本以及netcore 最新的,所以sql-cache
的版本要和.netcore的版本保持一致需要安裝最新版本,後面不添加 ----version 即爲安裝最新版本
C:\Users\Administrator>dotnet tool uninstall dotnet-sql-cache --global
已成功卸載工具“dotnet-sql-cache”(版本“3.1.1”)。
C:\Users\Administrator>dotnet tool install --global dotnet-sql-cache
已成功卸載工具“dotnet-sql-cache”(版本“3.1.2”)。
C:\Users\Administrator>dotnet tool uninstall dotnet-sql-cache --global
已成功卸載工具“dotnet-sql-cache”(版本“3.1.2”)。
//設置環境變量
C:\Users\Administrator>setx PATH "%PATH%;C:\Users\Administrator\.dotnet\tools"
成功: 指定的值已得到保存。
C:\Users\Administrator>dotnet tool install --global dotnet-sql-cache
由於剛安裝了 .NET Core SDK,因此在運行安裝的工具之前,需要重新打開命令提示符窗口。
可使用以下命令調用工具: dotnet-sql-cache 已成功安裝工具“dotnet-sql-cache”(版本“3.1.2”)。
C:\Users\Administrator>
設置環境變量之後提示需要重新打開命令提示符窗口,這是關掉cmd窗口,重新打開,win+ R ,打開cmd,輸入:dotnet tool install --global dotnet-sql-cache
Microsoft Windows [版本 10.0.17763.1131]
(c) 2018 Microsoft Corporation。保留所有權利。
C:\Users\Administrator>dotnet tool install --global dotnet-sql-cache
已安裝工具“dotnet-sql-cache”。
輸入:dotnet tool install --global dotnet-sql-cache,提示已安裝,則表示dotnet-sql-cache安裝成功,並設置了環境變量,下面就是創建數據庫
輸入:dotnet sql-cache create "Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=master;Integrated Security=True;" dbo mysqlserverCache
C:\Users\Administrator>dotnet sql-cache create "Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=master;Integrated Security=True;" dbo mysqlserverCache
Table and index were created successfully.
C:\Users\Administrator>
master數據庫下的dbo框架下的mysqlserverCache表創建成功
打開數據庫可以看到
5、運行
運行項目,結果如下
6、在上圖運行結果中發現 數據庫中的時間格式不對,這是因爲時區設置不對,是默認的時區,沒有設置成當前的時區,
設置時區,如下:
新建MySystemClock時鐘類,該類MySystemClock繼承ISystemClock,代碼如下:
在Startup中註冊服務修改如下如下:
全部保存之後在運行, 運行結果