上次给大家推荐过一个缓存中间件《一个C#开发的非常实用的缓存中间件》,今天再给大家推荐一个缓存中间件,两者功能差不多,都是提供统一接口、多级缓存、分布式缓存、支持多种Provider等。

项目简介

这是一个基于.Net Core开发的缓存中间件,它支持各种缓存并提供了很多高级功能。它的主要目标是让开发人员开发更简单、特别是一些复杂的缓存场景。

项目特色功能

1、统一缓存接口:方便我们随时调整缓存策略;

2、支持多种缓存:可以满足我们多种业务场景;

3、支持多种缓存系列化:BinaryFormatter、Newtonsoft.Json,MessagePack和Protobuf;

4、支持缓存AOP:able, put,evict,可以简化我们的代码量;

5、多实例支持;

6、支持Diagnostics:方便我们跟踪定位;

7、针对Redis支持特殊Provider:比如原子递增递减的操作等等;

8、二级缓存。

技术架构

1、跨平台:这是基于.Net Core开发的系统,可以部署在Docker, Windows, Linux。

2、基于Net 6.0开发。

3、支持缓存类别:本地缓存:InMemory,SQLite;分布式缓存:StackExchange.Redis,csredis,EnyimMemcachedCore。

项目结构

===

使用方法

**配置缓存

**

在Startup.cs,配置缓存

public void ConfigureServices(IServiceCollection services)
{
......
services.AddEasyCaching(option =>
{
//内存缓存:default
option.UseInMemory("default"); //内存缓存:cus
option.UseInMemory("cus"); //redis缓存:redis1
option.UseRedis(config =>
{
config.DBConfig.Endpoints.Add(new ServerEndPoint("127.0.0.1", 6379));
config.DBConfig.SyncTimeout = 10000;
config.DBConfig.AsyncTimeout = 10000;
config.SerializerName = "mymsgpack";
}, "redis1")
.WithMessagePack("mymsgpack")//with messagepack serialization
; //redis缓存:redis2
option.UseRedis(config =>
{
config.DBConfig.Endpoints.Add(new ServerEndPoint("127.0.0.1", 6380));
}, "redis2"); //sqlite缓存
option.UseSQLite(config =>
{
config.DBConfig = new SQLiteDBOptions { FileName = "my.db" };
}); //memcached 缓存
option.UseMemcached(config =>
{
config.DBConfig.AddServer("127.0.0.1", 11211);
}); option.UseMemcached(Configuration); //fasterKv缓存
option.UseFasterKv(config =>
{
config.SerializerName = "msg";
})
.WithMessagePack("msg");
});
}

**使用方式

**

public class CusController : Controller
{
//缓存
private readonly IEasyCachingProviderFactory _factory;
public CusController(IEasyCachingProviderFactory factory)
{
this._factory = factory;
} // GET api/cus/inmem?name=Default
[HttpGet]
[Route("inmem")]
public string Get(string name = EasyCachingConstValue.DefaultInMemoryName)
{
//根据name,获取缓存实例
var provider = _factory.GetCachingProvider(name);
var val = name.Equals("cus") ? "cus" : "default";
var res = provider.Get("demo", () => val, TimeSpan.FromMinutes(1));
return $"cached value : {res}";
}
......
}

ResponseCache缓存

[ResponseCache(Duration = 30, VaryByQueryKeys = new string[] { "page" })]
public IActionResult List(int page = 0)
{
return Content(page.ToString());
}

AOP缓存

[EasyCachingAble(Expiration = 10)]
string GetCurrentUtcTime(); [EasyCachingPut(CacheKeyPrefix = "Castle")]
string PutSomething(string str); [EasyCachingEvict(IsBefore = true)]
void DeleteSomething(int id);

项目地址

https://github.com/dotnetcore/EasyCaching

更多开源项目请查看一个专注推荐优秀.Net开源项目的榜单

- End -

文章首发于公众号【编程乐趣】,欢迎大家关注。

一个.Net Core开源缓存中间件,让你更加简单、方便使用缓存的更多相关文章

  1. 我发起了一个 .Net Core 平台上的 分布式缓存 开源项目 ShareMemory 用于 取代 Redis

    Redis 的 安装 是 复杂 的, 使用 是 复杂 的, Redis 的 功能 是 重型 的, Redis 本身的 技术实现 是 复杂 的 . Redis 是用 C 写的, C 语言 编写的代码需要 ...

  2. 三分钟学会Redis在.NET Core中做缓存中间件

    大家好,今天给大家说明如何在.NET Core中使用Redis,我们在想要辩论程序的好与坏,都想需要一个可视化工具,我经常使用的是一位国内大牛开发的免费工具,其Github地址为: https://g ...

  3. 我发起了一个 .Net Core 平台上的 开源项目 ShadowDomain 用于 热更新

    大家好,  我发起了一个 .Net Core 平台上的 开源项目 ShadowDomain  用于 热更新 . 简单的说, 原理就是 类似 Asp.net 那样 让 当前 WebApp 运行在一个 A ...

  4. .NET Core开源API网关 – Ocelot中文文档

    Ocelot是一个用.NET Core实现并且开源的API网关,它功能强大,包括了:路由.请求聚合.服务发现.认证.鉴权.限流熔断.并内置了负载均衡器与Service Fabric.Butterfly ...

  5. Ocelot - .Net Core开源网关

    Ocelot - .Net Core开源网关 作者:markjiang7m2 原文地址:https://www.cnblogs.com/markjiang7m2/p/10857688.html 源码地 ...

  6. Ocelot(一)- .Net Core开源网关

    Ocelot - .Net Core开源网关 作者:markjiang7m2 原文地址:https://www.cnblogs.com/markjiang7m2/p/10857688.html 源码地 ...

  7. Github上优秀的.NET Core开源项目的集合

    内容包括:库.工具.框架.模板引擎.身份认证.数据库.ORM框架.图片处理.文本处理.机器学习.日志.代码分析.教程等. Github地址:https://github.com/jasonhua95/ ...

  8. 开源分布式中间件 DBLE 快速入门指南

    GitHub:https://github.com/actiontech/dble 官方中文文档:https://actiontech.github.io/dble-docs-cn/ 一.环境准备 D ...

  9. ASP.NET Core 3.1 中间件

    参考微软官方文档 : https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/middleware/?view=aspnetcore-3.1 ...

  10. ASP.NET Core错误处理中间件[3]: 异常处理器

    DeveloperExceptionPageMiddleware中间件错误页面可以呈现抛出的异常和当前请求上下文的详细信息,以辅助开发人员更好地进行纠错诊断工作.ExceptionHandlerMid ...

随机推荐

  1. Docker部署Nastool(含jellyfin、transmission)

    先弄清楚原理 首先从[资源搜索]或者[推荐栏目]寻找自己想看的电影,执行订阅或者搜索资源启动下载,下载电影存放在downloads/mov目录下,[媒体整理]就是将mov子目录下电影文件复制到down ...

  2. kvm虚拟机创建和管理(2)

  3. 2020-2021第一学期2024"DCDD"小组第十二周讨论

    2020-2021第一学期"DCDD"第十二周讨论 这次不同的是,先来一个密文吧: 53fd95b7c2bd8c1383cdcbf5b04e3880 求解! 小组名称:DCDD 小 ...

  4. SQL 之 SQL server 中 遇到字段的值为null 遇到的坑

    SQL server 中,如果查询或筛选的条件中,某字段的值为NULL,如何处理?又有哪些坑需要避免呢? 直接上坑 : NULL 与其他任何类型进行逻辑判断: [解释]: NULL表示值未知,和空字符 ...

  5. Windows如何生成公钥和私钥

    Windows如何生成公钥和私钥 方法一)使用git命令 一. 首先安装git二. 桌面上右键 Git Bash Here三. 命令ssh-keygen -t rsa然后 一直enter 四. 将公钥 ...

  6. 身为一个java开发人员对目前java开发的一些小小的认识

    为什么要学java? 第一要工作,第二想要高薪 首先身为java开发工作人员你的思想认知程度要搞,思想认知程度决定你的专业技能水平 JavaSE工程师     B/S 架构   ----    浏览器 ...

  7. UVA10404

    由题意可知,这题和巴什博弈没什么关系了 相似题目:AtCoder Beginner Contest 278 F - Shiritori 预备知识:DP,博弈论的必胜态和必败态 问题的关键是确定\(f_ ...

  8. 个人IDEA常用快捷键

    1. Ctrl 快捷键 说明 Ctrl + P 在方法参数括号内显示参数类型提示 Ctrl + Q 显示类或方法的文档注释相关信息 Ctrl + D 复制当前行 Ctrl + Y 删除当前行 Ctrl ...

  9. day01学习小记

    # Markdown学习 ## 标题 ### 三级标题 #### 四级标题 ## 字体 Hellow,World! Hellow,world hellow,world! hellow,world ## ...

  10. 打开CMD的方式

    打开Cmd的方式: 1.开始+系统+命令提示符 2.Win键+R 3.在任意文件夹下,按住Shift键+鼠标右键点击,在此处打开命令行窗口 4.资源管理的地址栏前面加上Cmd路径 管理员运行方式 :系 ...