ASP.NET Core中使用EasyCaching作为缓存抽象层

简介

做后端开发,缓存应该是天天在用,很多时候我们的做法是写个帮助类,然后用到的时候调用一下。这种只适合简单层次的应用;一旦涉及到接口实现调整之类的,这种强耦合的做法很不合适。有些其他的功能又要去重复造轮子。下面我们介绍下EasyCaching。

github地址

outside_default.png

EasyCaching 是一个开源缓存库,包含缓存的基本用法和一些高级用法,可以帮助我们更轻松地处理缓存!

主要功能

  1. 统一的抽象缓存接口

  2. 多种常用的缓存Provider(InMemory,Redis,Memcached,SQLite)

  3. 为分布式缓存的数据序列化提供了多种选择

  4. 二级缓存

  5. 缓存的AOP操作(able, put,evict)

  6. 多实例支持

  7. 支持Diagnostics

  8. Redis的特殊Provider

EasyCaching.Redis 是一个基于EasyCaching.CoreStackExchange.Redis的 redis 缓存库。

当你使用这个库时,这意味着你将处理你的 redis 服务器的数据。像往常一样,我们将它用作分布式缓存。

如何使用

基本用法

1.通过Nuget安装包

Install-Package EasyCaching.Redis复制代码

2. Startup 类中的配置

有两种方法可以配置缓存提供程序。

通过 C# 代码:

public class Startup{    //...public void ConfigureServices(IServiceCollection services){        //other services.//Important step for Redis Caching       services.AddEasyCaching(option =>{option.UseRedis(config => {config.DBConfig.Endpoints.Add(new ServerEndPoint("127.0.0.1", 6379));}, "redis1");});}
}复制代码

或者,您可以将配置存储在appsettings.json.

public class Startup{    //...public void ConfigureServices(IServiceCollection services){        //other services.//Important step for Redis Cachingservices.AddEasyCaching(option =>{option.UseRedis(Configuration, "myredisname");});}
}复制代码

appsettings.json例子:

"easycaching": {    "redis": {        "MaxRdSecond": 120,        "EnableLogging": false,        "LockMs": 5000,        "SleepMs": 300,        "dbconfig": {            "Password": null,            "IsSsl": false,            "SslHost": null,            "ConnectionTimeout": 5000,            "AllowAdmin": true,            "Endpoints": [{                    "Host": "localhost",                    "Port": 6739}],            "Database": 0}}
}复制代码

3.调用IEasyCachingProvider

以下代码展示了如何在 ASP.NET Core Web API 中使用 EasyCachingProvider。

[Route("api/[controller]")]public class ValuesController : Controller{    private readonly IEasyCachingProvider _provider;    public ValuesController(IEasyCachingProvider provider){        this._provider = provider;}[HttpGet]    public string Get(){        //Remove_provider.Remove("demo");        //Set_provider.Set("demo", "123", TimeSpan.FromMinutes(1));        //others ...}
}复制代码

4. Redis 功能提供者

Redis还有很多其他的数据类型,比如Hash、List等。

EasyCaching.Redis 也支持那些命名为 redis 特性提供者的类型。

如果您想使用此功能提供程序,只需调用IRedisCachingProviderreplace 即可IEasyCachingProvider

[Route("api/[controller]")]public class ValuesController : Controller{    private readonly IRedisCachingProvider _provider;    public ValuesController(IRedisCachingProvider provider){        this._provider = provider;}[HttpGet]    public string Get(){        // HMSetvar res = _provider.HMSet(cacheKey, new Dictionary<string, string>{{"a1","v1"},{"a2","v2"}});        //others ...}
}

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

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

相关文章

mysql qps如何查看_mysql状态查看 QPS/TPS/缓存命中率查看

运行中的mysql状态查看对正在运行的mysql进行监控&#xff0c;其中一个方式就是查看mysql运行状态。(1)QPS(每秒Query量)QPS Questions(or Queries) / uptimemysql > show global status like Question%;mysql > show global status like uptime%;(2)TPS(每秒事务量…

visual studio开启多核编译方法

先按http://blog.csdn.net/acaiwlj/article/details/50240625的方法进行了VS多线程的启动。 原本以为按以下步骤设置就OK了&#xff0c;但是编译中无意间发些了一个warning&#xff1a;“/Gm”与多处理不兼容&#xff1b;忽略 /MP 开关&#xff01;&#xff01;&#xff01;&am…

聊聊storm nimbus的LeaderElector

为什么80%的码农都做不了架构师&#xff1f;>>> 序 本文主要研究一下storm nimbus的LeaderElector Nimbus org/apache/storm/daemon/nimbus/Nimbus.java public static void main(String[] args) throws Exception {Utils.setupDefaultUncaughtExceptionHandler();…

Android框架式编程之BufferKnife

BufferKnife作为框架式编程的重要组成部分&#xff0c;使用BufferKnife能够极大的精简View层面的代码量&#xff0c;并为MVP/MVC方式提供辅助。 一、配置 compile com.jakewharton:butterknife:(insert latest version) annotationProcessor com.jakewharton:butterknife-compi…

如果我去深圳,你会见我吗

▲图/ 深圳夜景初次见易小姐&#xff0c;还是21年的春节回老家的时候。想来20年因为疫情没有回家&#xff0c;家母几次三番电话里头表达的思念以及建议一些不靠谱的回家计划&#xff0c;着实有些不忍&#xff0c;确实有似“儿行千里母担忧”之理&#xff0c;索性拿着年假和加班…

CodeForces - 1059D(二分+误差)

链接&#xff1a;CodeForces - 1059D 题意&#xff1a;给出笛卡尔坐标系上 n 个点&#xff0c;求与 x 轴相切且覆盖了所有给出点的圆的最小半径。 题解&#xff1a;二分半径即可。判断&#xff1a;假设当前二分到的半径是 R &#xff0c;因为要和 x 轴相切&#xff0c;所以圆心…

pureref 平移用不了_关于参考图管理神器 PureRef 的一些快捷键

PureRef 的一些快捷键 软件下载&#xff1a;点击这里控制(配合左键)窗口内鼠标左键     框选窗口边鼠标左键     调整窗口大小鼠标中键 或 按住Alt     移动画布鼠标滚轮 或 按住Z     缩放画布按住S     查看目标位置颜色信息(可复制16进制颜色…

Windows 10 版本信息

Windows 10 版本信息 原文 https://technet.microsoft.com/zh-cn/windows/release-info Windows 10 版本信息 Microsoft 已更新其服务模型。 半年频道每年发布两次功能更新&#xff0c;时间大概在 3 月和 9 月&#xff0c;每个版本的服务时间线为 18 个月。 从 Windows 10 版本…

开源轻量的 .NET 监控工具 - 看门狗

你好&#xff0c;这里是 Dotnet 工具箱&#xff0c;定期分享 Dotnet 有趣&#xff0c;实用的工具或组件&#xff0c;希望对您有用&#xff01;简介WatchDog 是一个使用 C# 开发的开源的轻量监控工具&#xff0c;它可以记录和查看 ASP.Net Core Web 和 WebApi 的实时消息、事件、…

python读取oracle数据库性能_用python对oracle进行简单性能测试

一、概述dba在工作中避不开的两个问题&#xff0c;sql使用绑定变量到底会有多少的性能提升&#xff1f;数据库的审计功能如果打开对数据库的性能会产生多大的影响&#xff1f;最近恰好都碰到了&#xff0c;索性做个实验。sql使用绑定变量对性能的影响开通数据库审计功能对性能的…

BZOJ 3231: [Sdoi2008]递归数列 (JZYZOJ 1353) 矩阵快速幂

http://www.lydsy.com/JudgeOnline/problem.php?id3231和斐波那契一个道理在最后加一个求和即可1 #include<cstdio>2 #include<cstring>3 #include<iostream>4 //using namespace std;5 const int maxn10010;6 const double eps1e-8;7 long long modn;8 lon…

马斯克的火箭上天了,SpaceX开源项目也登上了热榜!

python知识手册SpaceX于美国东部时间5月30日下午3&#xff1a;22分将两位美国宇航员送往国际空间站&#xff0c;虽然这只是Demo任务&#xff0c;但SpaceX已经以其卓越工程优势、低廉的发射成本赢得了全球航天产业的信赖。同时也是除美俄中这些航天国家队以外&#xff0c;唯一独…

EasyMock学习笔记

目前在接触平台侧的开发&#xff0c;发现平台侧的东西和以前javacard开发很不一样&#xff0c;看来以后要学的东西还有很多很多。今天接触了下EasyMock。 Mock 方法是单元测试中常见的一种技术&#xff0c;它的主要作用是模拟一些在应用中不容易构造或者比较复杂的对象&#xf…

app启动广告页的实现,解决了广告图片要实时更新的问题

网上很多的实现方法很多都是显示第一次的缓存的图片&#xff0c;这样就造成后台更新广告图片App不能实时展示的问题。 我的具体实现思路是&#xff1a; 1.启动时先获取启动页的图片全屏展示。 2.设计一个等待时间&#xff0c;如果超过等待时间还没拿到图片就把获取的启动页去掉…

vue中点击插入html_Vue中插入HTML代码的方法

我们需要吧Hello World插入到My name is Pjee应该如何做&#xff1f;一、使用v-htmlv-html:更新元素的 innerHTMLconst text Hello World>My name is Pjee注意&#xff1a;你的站点上动态渲染的任意 HTML 可能会非常危险&#xff0c;因为它很容易导致 XSS 攻击。请只对可信…

进程共享变量#pragma data_seg用法

#pragma data_seg介绍用#pragma data_seg建立一个新的数据段并定义共享数据&#xff0c;其具体格式为&#xff1a;   #pragma data_seg &#xff08;"shareddata")   HWND sharedwndNULL;//共享数据   #pragma data_seg() ---------------------------------…

机器视觉Halcon教程(1.介绍)

前言本期教程主要教大家如何使用Halcon机器视觉&#xff0c;通过使用Halcon, 我们可以实现一些机器视觉的应用开发。例如: OCR识别、视觉定位、缺陷检测等内容。什么是halcon&#xff1f;简单来说, Halcon就是一款应用于机器视觉的软件&#xff0c;它提供了一套开发工具&#x…

网络时间的那些事及 ntpq 详解

2019独角兽企业重金招聘Python工程师标准>>> GMT (Greenwich Mean Time)格林威治时间 UTC (Coordinated Universal Time) 协调世界时 IAT (International Atomic Time),TAI 国际原子时 CST (Chinese Standard Time), 北京时间Gentoo&#xff08;也许其他发行版也是&…

【前端芝士树】Javascript的原型与原型链

【前端芝士树】Javascript的原型、原型链以及继承机制 前端的面试中经常会遇到这个问题&#xff0c;自己也是一直似懂非懂&#xff0c;趁这个机会整理一下0. 为什么会出现原型和原型链的概念 1994年&#xff0c;网景公司&#xff08;Netscape&#xff09;发布了Navigator浏览器…

神奇的幻方2015提高组d1t1

题目描述 幻方是一种很神奇的N*N矩阵&#xff1a;它由数字1,2,3,……,N*N构成&#xff0c;且每行、每列及两条对角线上的数字之和都相同。 当N为奇数时&#xff0c;我们可以通过以下方法构建一个幻方&#xff1a; 首先将1写在第一行的中间。 之后&#xff0c;按如下方式从小到大…