随着分布式缓存在ASP.NET核心工作
来源:互联网 发布:java api接口调用方法 编辑:程序博客网 时间:2024/05/22 17:20
原文地址:http://www.c-sharpcorner.com/article/working-with-a-distributed-cache-in-asp-net-core/
说明
一般来说,缓存的地方经常使用的数据存储,以便应用程序可以快速访问数据,而不是从源访问数据。缓存可以提高应用程序的性能和可扩展性,大大有助于我们从外部数据源的数据经常变化的去除不必要的要求。
ASP.NET的核心 具有丰富的支持缓存并支持各种不同的缓存。在我过去的文章中,我解释了一下在内存中缓存。在这篇文章中,我们将讨论分布式缓存。它能帮助我们提高性能和可扩展性的应用程序,当应用程序驻留在Web场或云环境。
在分布式缓存,缓存中没有存储到一个单独的Web服务器的内存。缓存数据的集中管理,同一数据可供所有应用程序服务器。分布式缓存有几个优点,如下图所示。
- 高速缓存是集中存储的,所以所有的用户获得相同的数据和数据不依赖于Web服务器处理请求。
- 缓存数据是不受影响,如果有任何问题发生在Web服务器;即,重启,添加新的服务器,服务器被删除。
分布式缓存可以配置或者Redis或SQL Server。对缓存的实现不依赖于配置;应用与缓存进行交互,使用idistributedcache接口。
idistributedcache接口
这个接口的方法,它允许我们添加、删除和检索分布式缓存。该接口包含同步和异步方法。
- 得到的,GetAsync
它检索数据从缓存中,使用的密钥。它返回的字节[],如果钥匙不在缓存。 - 集,SetAsync
它增加了项目缓存字节[ ]。 - 刷新,RefreshAsync
它刷新的缓存项目并重置其过期超时,如果任何。 - 删除RemoveAsync
它从缓存中移除条目,使用关键。
我们需要执行三个简单的步骤,下面给出的配置在ASP.NET核心的分布式缓存。
- 定义为project.json文件缓存依赖项。
- 配置启动类缓存服务configureservices方法。
- 依赖自动注入到应用程序的中间件或MVC控制器的构造函数。使用这种缓存依赖项对象的实例,我们可以执行分布式缓存相关的操作
SQL Server分布式缓存
sqlservercache允许分布式缓存使用SQL Server作为缓存存储的目的。使用SQL Server作为一个缓存之前,我们必须创造以下架构表。
- 创造 表[ ] [ ](sqlcache dbo。
- [编号] [为](449)不 无效的,
- [价值] [ varbinary ](最大值)不 无效的,
- [ expiresattime ] [ DateTimeOffset ](7)不 无效的,
- [ slidingexpirationinseconds ] [bigint]无效的,
- 【absoluteExpiration ] [ DateTimeOffset ](7)无效的,
- 约束[ pk_id ]首要 钥匙聚([编号]ASC)与(pad_index =关闭,statistics_norecompute =关闭,ignore_dup_key =关闭,allow_row_locks =打开(放),allow_page_locks =打开(放))
- 打开(放)【首要])打开(放)【首要textimage_on [ ]首要]
下一步是添加依赖关系到project.json文件。使用SQL Server作为缓存,我们需要添加“微软。扩展。缓存。SQLServer”依赖的项目。
<strong>project.json</strong>
- {
- “版本”:“1.0.0 *”,
- “buildoptions”:{
- “preservecompilationcontext”:真正的,
- “debugtype”:“便携式”,
- “emitentrypoint”:真正的
- },
- “工具”:{
- “微软。扩展。缓存。sqlconfig。工具”:“1.0.0-preview2-final”
- },
- “依赖”:{ },
- “框架”:{
- “netcoreapp1.0”:{
- “依赖”:{
- “微软。磊科。应用程序”:{
- “类型”:“平台”,
- “版本”:“1.0.1”
- },
- “微软。aspnetcore红隼。服务器。”:“1.0.0”,
- “微软。aspnetcore。MVC”:“1.0.0”,
- “微软。扩展。缓存。记忆”:“1.0.0”,
- “微软。扩展。缓存。SQLServer”:“1.0.0”
- },
- “进口”:“dnxcore50”
- }
- }
- }
startup.cs
- 公共无效configureservices(iservicecollection服务){
- addmvc()服务;
- 服务。adddistributedsqlservercache(OPT = > {
- opt.connectionstring = @“服务器desktop-hp \ SQL;数据库= cachingtest;trusted_connection = true;”;
- opt.schemaname =“dbo”;
- opt.tablename =“sqlcache”;
- });
- }
在下面的例子中,我创建了创建缓存方法,检索缓存和清除高速缓存控制器。ASP.NET核心的MVC控制器能够要求他们依赖明确通过构造函数。我们利用缓存在我们的应用程序中的控制要求idistributedcache实例构造函数(或中间件)。在下面的代码片段中,我创建了控制器类的三种方法setcachedata,getcachedata和removecachedata。
HomeController.cs
- 使用系统;
- 文本使用系统;
- 使用microsoft.aspnetcore.mvc;
- 使用microsoft.extensions.caching.distributed;
- 公共类:{ HomeController控制器
- idistributedcache _memorycache;
- 公共(idistributedcache HomeController memorycache){
- _memorycache = memorycache;
- }
- 【路线(“家/ setcachedata”)]
- 公共iactionresult setcachedata() {
- VaR时间=日期。现在。tolocaltime()。tostring();
- 无功cacheoptions =新distributedcacheentryoptions {
- absoluteExpiration =日期。现在,AddYears(1)
- };
- _memorycache。配置(“时间”GetBytes(UTF8,编码。时间),cacheoptions);
- 退货 意见();
- }
- 【路线(“家/ getcachedata”)]
- 公共iactionresult getcachedata() {
- 字符串时间=空字符串;
- 时间=编码。UTF8。GetString(_memorycache。得到(“时间”));
- viewbag.data =时间;
- 退货 意见();
- }
- 【路线(“家/ removecachedata”)]
- 公共布尔removecachedata() {
- _memorycache。删除(“时间”);
- 退货 真正的;
- }
- }
我们称之为控制器的setcachedata时,它存储的数据到SQL表,这是在配置中指定。下面给出的代码片段,说明SQL Server存储数据。
使用redis分布式缓存
redis是一个开源的、存储在内存中的数据,这是作为一个分布式缓存。我们可以将它安装在本地和配置。同时,我们可以配置一个Azure的Redis的缓存。为了在Windows机器上安装使用的最简单的方法是巧克力。安装在本地计算机上运行呢,下面从PowerShell命令(管理模式)。
PS C:\“IEX((新对象。WebClient)。DownloadString('https:/ /巧克力/安装。org。PS1的))
这个命令下载Windows安装程序,chocalatey使用下面的命令,我们可以在本地计算机上安装使用。
PS C:\安装redis-64 >巧克力
一旦安装Redis服务器,使用下面的命令,在这里我们可以开始Redis服务器。
PS C:\ > redis服务器
检查是否redis服务器开始正常工作,我们可以ping服务器,使用redis客户端。
如果服务器工作正常,则返回“乒乓球”作为回应。
现在,Redis服务器可以作为一个分布式缓存。我们需要强调以下在project.json文件依赖。在这里,Redis的依赖只能与.NET Framework 4.5.1和4.5.2,所以我使用.NET Framework 4.5.1。
project.json
- {
- “buildoptions”:{
- “preservecompilationcontext”:真正的,
- “debugtype”:“便携式”,
- “emitentrypoint”:真正的
- },
- “依赖”:{
- “微软。aspnetcore红隼。服务器。”:“1.0.0”,
- “微软。aspnetcore。MVC”:“1.0.0”,
- “微软。扩展。缓存。redis”:“1.0.0”
- },
- “框架”:{
- “net451”:{ },
- }
- }
statup.cs
- 公共无效configureservices(iservicecollection服务){
- addmvc()服务;
- 服务。adddistributedrediscache(选项= > {
- 配置选项。“本地:6379”;
- options.instancename =“”;
- });
- }
127.0.0.1:6379 >键*
概要
如果我们比较一下 在内存中缓存分布式缓存在内存缓存比分布式缓存更快,但是它有一些缺点。如果我们将以上两描述分布式缓存Redis服务器选项,比SQL Server快。为了提高SQL Server分布式缓存的性能,我们可以使用内存优化的表但varbinary(max)和缓存DateTimeOffset数据类型不支持 内存优化表如果我们想为缓存使用SQL Server,我们可以用“DBCC便携式“为了确保表存放在内存。
Download 100% FREE Spire Office APIs
- ASP.NET Core
Don’t miss Jignesh Trivedi’s next article
0 0
- 随着分布式缓存在ASP.NET核心工作
- 在ASP.NET MVC中使用分布式缓存
- 分布式缓存系统Memcached在Asp.net下的应用
- ASP.NET缓存。Memcached分布式缓存
- memached+asp.net 4.0 分布式缓存
- 详解ASP.NET缓存的工作原理
- ASP.NET基本分布式缓存Memcached测试实例
- ASP.NET的分布式缓存介绍,MyCache ,Memcached ,CacheManager
- 在asp.net页面加缓存
- SqlCacheDependency 类在 ASP.NET 中缓存
- 在ASP.NET中清除缓存
- 缓存在ASP.NET应用程序中的应用
- 在 ASP.NET 中缓存应用程序数据
- .Net 分布式缓存
- 在.Net C#中使用分布式缓存系统Memcached
- ASP.NET缓存全解析7:第三方分布式缓存解决方案 Memcached和Cacheman
- ASP.NET 缓存全解析7:第三方分布式缓存解决方案 Memcached和Cacheman
- Asp.net核心对象
- Tomcat启动时错误:Cannot rename original file to ...
- CQOI2017酱油记(spark)
- JavaScript
- 修改tomcat的conf/server.xml解决网页乱码
- J2EE工具类:ArrayUtil.java
- 随着分布式缓存在ASP.NET核心工作
- 关于mybatis返回map是排序问题
- FileReader读取中文txt文件编码丢失问题(乱码)
- RecylerView之瀑布流显示
- Struts 与 Velocity 的集成
- Web开发中的Listener和Filter
- 一个新的项目:狼人杀(七)
- 设置dialog的with占满屏。
- HttpSessionListener和HttpSessionBindingListener的区别