如何在 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/304388.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle 动态游标行数,oracle动态游标的简单实现方法

下面就是例子程序--明细表打印予处理 通用报表&#xff1a;procedure mx_print_common(pd_id in mx_pd_syn.pd_id%type,p_pd_mxb_id IN mx_pd_mxb_syn.p_mxb_id%type,p_dept_no IN sc_mxk.dept_code%type,p1 sc_bz_syn.bz_code%type,p2 sc_cjjc_syn.cjjc_code%type,p3 sc_mxk.…

每扇区2048字节的U盘乱码的数据恢复

每扇区2048字节的U盘乱码的数据恢复一个U盘&#xff0c;FAT32分区&#xff0c;显示的是乱码&#xff0c;远程看对方的U盘参数&#xff0c;发现一个比较怪的现象&#xff1a;每扇区字节数是2048字节&#xff08;U盘量产时可能是以光盘形式形成的&#xff09;&#xff0c;对方传的…

为什么有些大公司的效率弱爆了?

阅读本文大概需要5分钟。上周写了篇文章&#xff1a;为什么有些大公司的技术弱爆了&#xff1f;不少朋友读完后表示有同感&#xff0c;还有一些朋友在读者群探讨大公司效率问题。有几个朋友谈到自己的公司效率低下&#xff0c;做一件事需要层层审批&#xff0c;并且遇到各种阻力…

2018年最有前景的十大行业

我们想和大家分享的是围绕十个行业、数十个细分领域&#xff0c;在2018年发展趋势展望&#xff1a;01 消费新零售——平台级近半年&#xff0c;新零售已被多次提及。但在年终盘点我们再次提到这个“热词”&#xff0c;是因为该领域未来还将出现超级平台级的公司。新零售未来更多…

oracle 监听 无法连接,解决ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务...

你还有可能是遇到了定时的问题。如果监听器被重新启动&#xff0c;那么数据库实例就必须向它重新注册。通常情况下&#xff0c;每60秒就会出现这样的问题。如果你迫不及待&#xff0c;那么就以数据库管理员的身份登录到数据库服务器&#xff0c;并且运行“更改系统注册器”&…

下列选项中 采用边界值平滑_数据挖掘期末考题(答案).doc

华南理工大学计算机科学与工程学院2012—2013学年度第二学期期末考试《数据仓库与数据挖掘技术》试 卷(假的)专业&#xff1a;计算机科学与技术 年级&#xff1a;2010 姓名&#xff1a; 学号&#xff1a;注意事项&#xff1a;1. 本试卷共四大题&#xff0c;满分100分&#xff0…

昨日搬至办公室的书籍

由于家里地方小&#xff0c;总有一部分书籍需要跟着我辗转至各公司。其中一些公司只能让我放抽屉&#xff08;地方小&#xff09;甚至地板上&#xff0c;而有一些公司就能让我把书都摞桌子上。昨天下午我特地来了一次办公室&#xff0c;只为搬运书籍。灭霍霍&#xff0c;可真是…

如何在 ASP.Net Core 中对接 WCF

在 REST API 出现之前&#xff0c;SOAP (Simple Object Access Protocol) 一直都是基于 web 的标准协议&#xff0c;虽然现在 REST 大行其道&#xff0c;但在平时开发中总会遇到对接第三方服务采用的是基于SOAP协议的场景&#xff0c;在这篇文章中&#xff0c;我们将会讨论如何…

什么是区块链? 区块链的入门教程~

区块链&#xff08;blockchain&#xff09;是眼下的大热门&#xff0c;新闻媒体大量报道&#xff0c;宣称它将创造未来。可是&#xff0c;简单易懂的入门文章却很少。区块链到底是什么&#xff0c;有何特别之处&#xff0c;很少有解释。下面&#xff0c;我就来尝试&#xff0c;…

linux提升权限命令提示符,win10如何直接使用命令提示符提高管理员权限?

原标题&#xff1a;win10如何直接使用命令提示符提高管理员权限?在使用普通的命令提示符时&#xff0c;如果遇到需要管理员权限的操作&#xff0c;往往需要重新打开一个具有管理员权限的命令提示符页面进行操作。而在Linux操作系统中&#xff0c;可以通过输入su来获取系统最高…

require引入js vue_请教 关于使用require 引入vue 和公共js的问题

移动端布局 计算font-size的1、引入公共样式失败。没有去计算2、aa 是vue 引入成功。 但是 我以后一个文件需要一个vue 文件 应该怎么引入好点啊。 怎么分解开进行引入?3、在vue的情况下。 引入Mint UI我理解是在main的文件里面加载vue Mint ui 和一些公共样式。 在页面引入ma…

探索 .NET Core 依赖注入的 IServiceProvider

在上一篇文章中&#xff0c;我们学习了Microsoft.Extensions.DependencyInjection中的IServiceCollection&#xff0c;包括服务注册转换为ServiceDescriptors&#xff0c;然后添加到集合中。探索 .NET Core 依赖注入的 IServiceCollection[1]在本文中&#xff0c;我们会学习 IS…

《WinForm开发系列之控件篇》Item1 BackgroungWorker

cranejuan的专栏 BackgroundWorker实现原理 winfom組件---BackgroundWorker转载于:https://www.cnblogs.com/Sue_/articles/1657254.html

如何快速高效地学习互联网新技术

我们生活在一个振奋人心的时代&#xff0c;区块链、人工智能、大数据&#xff0c;现在各种新技术层出不穷&#xff0c;那么如何快速高效地学习互联网新技术呢&#xff1f;我认为首先思想要主动求变&#xff0c;敢于跳出自己的舒适区&#xff0c;对任何技术都抱有开放的心态。贪…

linux上用的端口转发工具,linux下最简单好用的的端口转发工具

linux下最简单好用的的端口转发工具解压安装tar zxvf rinetd.tar.gzmakemake install编辑配置vi /etc/rinetd.conf0.0.0.0 8080 172.19.94.3 80800.0.0.0 2222 192.168.0.103 33891.2.3.4 80 192.168.0.10 80说明一下(0.0.0.0表示本机绑定所有可用地址)将所有发往本机8080端口的…

.NET Core用数据库做配置中心加载Configuration

本文介绍了一个在.NET中用数据库做配置中心服务器的方式&#xff0c;介绍了读取配置的开源自定义ConfigurationProvider&#xff0c;并且讲解了主要实现原理。1、 为什么用数据库做配置中心在开发youzack.com这个学英语网站的时候&#xff0c;需要保存第三方接口AppKey、JWT等配…

abaqus质量缩放系数取值_ABAQUS/Explicit质量缩放(MASS SCALING)使用心得  [转simwe]...

概要准静态分析或某些动态分析中&#xff0c;少数尺寸较小的单元控制稳态时间增量&#xff0c;为提高计算效率&#xff0c;ABAQUS/Explicit常采用质量缩放的方法。质量缩放可用于&#xff1a;1、缩放整个模型&#xff0c;单个单元或单元组的质量2、多步分析中&#xff0c;缩放每…

linux 修改默认脚本,linux环境初始脚本

#//把下面内容&#xff0c;做成init.sh文件&#xff0c;放到liunx任意目录下&#xff0c;用bash ./init.sh#//执行&#xff0c;或用chmod -R 777 init.sh#//赋权后&#xff0c;再用./init.sh#//执行#!/bin/bash## 初始centOS系统环境# 1. 在线安装一些编译环境# 2. 关闭防火墙#…

python lock_python lock一步步教你理解Python装饰器

请仔细看我们的decorator实例。我们定义了一个接受单个参数some_func的名为outer的函数。在outer内部我们定义了一个名为inner的嵌套函数。inner函数打印一个字符串然后调用some_func&#xff0c;在#1处缓存它的返回值。some_func的值可能在每次outer被调用时不同&#xff0c;但…

Abp Vnext Pro 的 Vue 实现版本

Abp Vnext Pro 的 Vue 实现版本开箱即用的中后台前端/设计解决方案知识点.Net Core5.0Abp Vnext 4.x ,Ant Design, Vue2.xMysql,Redis,Hangfire,ES(日志可选),Nocas(可选,未集成,计划中),RabbitMq(未集成,计划中)微服务架构设计, DDD 实践容器化 CI CD系统功能用户管理角色管理…