blncle 2020-03-20
.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中注册服务修改如下如下:
运行结果