如何在 ASP.Net Core 中使用 NCache
虽然 ASP.Net Core 中缺少 Cache 对象,但它引入了三种不同的cache方式。
内存缓存
分布式缓存
Response缓存
Alachisoft 公司提供了一个开源项目 NCache,它是一个高性能的,分布式的,可扩展的缓存框架,NCache不仅比 Redis 快,而且还提供了一些Redis所不具有的分布式特性,如果你想了解 NCache 和 Redis 的异同,可参考如下链接:http://www.alachisoft.com/resources/comparisons/redis-vs-ncache.php ,这篇文章我们将会讨论如何在 ASP.Net Core 中使用 NCache。
要想在 ASP.Net Core 中使用 NCache,需要通过 NuGet 安装如下包,你可以通过 NuGet Package Manager console 窗口输入如下命令进行安装。
Install-Package Alachisoft.NCache.SessionServices
使用 IDistributedCache
要想在 ASP.Net Core 中使用分布式缓存,需要实现 IDistributedCache 接口,这个接口主要用于让第三方的缓存框架无缝对接到 ASP.Net Core 中,下面是 IDistributedCache 的骨架代码。
namespace Microsoft.Extensions.Caching.Distributed{public interface IDistributedCache{byte[] Get(string key);void Refresh(string key);void Remove(string key);void Set(string key, byte[] value,DistributedCacheEntryOptions options);}}
配置 NCache
要想把 NCache 作为分布式缓存,需要在 ConfigureServices()
中调用 AddNCacheDistributedCache 扩展方法将其注入到容器中,如下代码所示:
// This method gets called by the runtime. Use this method to add services to the container.public void ConfigureServices(IServiceCollection services){services.AddNCacheDistributedCache(configuration =>{configuration.CacheName = "IDGDistributedCache";configuration.EnableLogs = true;configuration.ExceptionsEnabled = true;});services.AddControllersWithViews();}
使用 NCache 进行CURD
为了方便演示,先来定义一个 Author 类,如下代码所示:
public class Author{public int AuthorId { get; set; }public string FirstName { get; set; }public string LastName { get; set; }}
接下来实现从 NCache 中读取 Author 对象,如果缓存中存在 Author 对象,则直接从缓存中读取,如果缓存中没有,则需要先从数据库中获取 Author,然后再将 Author 塞入到 Cache 中,下面的具体代码逻辑仅供参考。
public async Task<Author> GetAuthor(int id){_cache = NCache.InitializeCache("CacheName");var cacheKey = "Key";Author author = null;if (_cache != null){author = _cache.Get(cacheKey) as Author;}if (author == null) //Data not available in the cache{if (_cache != null){_cache.Insert(cacheKey, author, null, Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(10), Alachisoft.NCache.Runtime.CacheItemPriority.Default);}}return author;}
NCache 由 Alachisoft 出品给 .NET 世界提供了一种分布式缓存的解决方案,同时你也能看到 IDistributedCache 是一套标准的用于分布式缓存的高层API,方便第三方的缓存无缝接入,比如:Redis,Mongodb,Mysql 等等。
译文链接:https://www.infoworld.com/article/3342120/how-to-use-ncache-in-aspnet-core.html
如何在 ASP.Net Core 中使用 NCache相关推荐
- 如何在 ASP.NET Core 中使用 HttpClientFactory ?
ASP.Net Core 是一个开源的,跨平台的,轻量级模块化框架,可用它来构建高性能的Web程序,这篇文章我们将会讨论如何在 ASP.Net Core 中使用 HttpClientFactory. ...
- 如何在 ASP.Net Core 中使用 Autofac
依赖注入可以有效的实现对象之间的 松耦合 并能够实现代码的可测试和可维护性,ASP.Net Core 提供了一个极简版的容器实现对 依赖注入 的原生支持,然而内置的依赖注入容器相比成熟的 依赖注入容器 ...
- 如何在 ASP.Net Core 中使用 Lamar
ASP.Net Core 自带了一个极简的 开箱即用 的依赖注入容器,实际上,你还可以使用第三方的 依赖注入容器 来替代它,依赖注入是一种设计模式,它能够有效的实现对象之间的解耦并有利于提高单元测试和 ...
- 如何在 ASP.Net Core 中使用 MediatR
MediatR 是一个 中介者模式 的.NET开源实现, 中介者模式 管控了一组对象之间的相互通讯并有效的减少了对象之间错综复杂的相互依赖,在 中介者模式 中,一个对象不需要直接和另一个对象进行通讯, ...
- 如何在 ASP.Net Core 中对接 WCF
在 REST API 出现之前,SOAP (Simple Object Access Protocol) 一直都是基于 web 的标准协议,虽然现在 REST 大行其道,但在平时开发中总会遇到对接第三 ...
- 如何在 ASP.Net Core 中使用 Configuration Provider
ASP.NET Core 是一个开源的,跨平台的,精简的模块化框架,可用于构建高性能,可扩展的web应用程序, ASP.NET Core 中的数据配置常用 k-v 的形式存储,值得注意的是,新的数据配 ...
- 如何在 ASP.Net Core 中使用 Serilog
记录日志的一个作用就是方便对应用程序进行跟踪和排错调查,在实际应用上都是引入 日志框架,但如果你的 日志文件 包含非结构化的数据,那么查询起来将是一个噩梦,所以需要在记录日志的时候采用结构化方式. 将 ...
- 如何在 ASP.NET Core 中使用 URL Rewriting 中间件
URL rewriting 是根据预先配置好的一组规则去修改 request url,值得注意的是:URL Rewriting 的重写功能和 url 重定向 是两个概念,本篇我们就来讨论下如何在 AS ...
- 如何在 ASP.NET Core 中使用 Quartz.NET 执行任务调度
当我们在web开发中,常常会遇到这么一个需求,在后台执行某一项具体的任务,具体的说就是这些任务必须在后台定时执行. Quartz.NET 是一个开源的 JAVA 移植版,它有着悠久的历史并且提供了强大 ...
最新文章
- KOAProgressBar
- 关于HTTP GET请求的url中文参数编码
- CentOS 5.4下的Memcache安装步骤(Linux+Nginx+PHP+Memcached)
- 使用Sysmon和Splunk探测网络环境中横向渗透
- golang mysql商业用例_完美起航-golang操作mysql用例
- 20162321王彪 2017-2018-1 《程序设计与数据结构》第三周学习总结
- Fragment的布局中自定义Layout的onSizeChanged添加组件失败的问题
- 微软亚研院:CV领域2019年重点论文推荐
- e的矩阵次方_利用状态转移矩阵和VBA求游戏中各种事件达成次数的期望
- 用npm发布一个npm包
- ide进行php编程快捷键,PHP IDE phpstorm 快捷键
- JSP实用教程 第二章 JSP语法
- spring session过期时间设置
- esxi安装系统ndows,ESXI 安装 Windows Server 2012过程
- 电脑眼病和干眼症的相关知识
- 【题解】洛谷P1328[NOIP2014]生活大爆炸版石头剪刀布 模拟
- Prometheus监控告警
- win 32学习笔记(三) 消息队列
- 作为一个程序员,你是怎么管理文档资料的?我这个方法特别方便
- 乐鑫Esp32学习之旅14 esp32 sdk编程实现门户强制认证,连接esp32热点之后,自动强制弹出指定的登录html界面。(附带Demo)