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

本文涉及的产品
云原生内存数据库 Tair,内存型 2GB
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Redis 版,经济版 1GB 1个月
简介: 一个.Net Core开源缓存中间件,让你更加简单、方便使用缓存

上次给大家推荐过一个缓存中间件《一个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


- End -


推荐阅读


一个.Net Core开源监控解决方案,支持Redis、Elasticsearch、SqlServer


一个支持.Net 7的WinForm开源UI组件框架


盘点3个.Net开发的WMS仓库管理系统


推荐一个.Ner Core开发的配置中心开源项目


一款针对EF Core轻量级分表分库、读写分离的开源项目

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
10天前
|
存储 缓存 中间件
|
1月前
|
Cloud Native API C#
C#的现代化:.NET Core引领的技术革命
【6月更文挑战第9天】`.NET Core引领C#现代化,实现跨平台革命,提升性能并支持云原生应用。异步编程模型优化体验,统一API简化开发流程。C#应用场景扩展,开发效率提高,技术创新加速,预示其未来在技术领域将持续发挥关键作用。`
33 10
|
6天前
|
开发框架 .NET API
.NET Core 和 .NET 标准类库项目类型有什么区别?
在 Visual Studio 中,可创建三种类库:.NET Framework、.NET Standard 和 .NET Core。.NET Standard 是规范,确保跨.NET实现的API一致性,适用于代码共享。.NET Framework 用于特定技术,如旧版支持。.NET Core 库允许访问更多API但限制兼容性。选择取决于兼容性和所需API:需要广泛兼容性时用.NET Standard,需要更多API时用.NET Core。.NET Standard 替代了 PCL,促进多平台共享代码。
|
13天前
|
开发框架 JSON .NET
|
16天前
|
开发框架 .NET Nacos
使用 Nacos 在 C# (.NET Core) 应用程序中实现高效配置管理和服务发现
使用 Nacos 在 C# (.NET Core) 应用程序中实现高效配置管理和服务发现
40 0
|
1月前
|
消息中间件 存储 NoSQL
阿里开源中间件一览
阿里开源中间件一览
49 2
|
18天前
|
存储 JSON NoSQL
技术心得记录:在.NETCore中使用CSRedis
技术心得记录:在.NETCore中使用CSRedis
12 0
|
19天前
|
SQL 开发框架 .NET
(20)ASP.NET Core EF创建模型(必需属性和可选属性、最大长度、并发标记、阴影属性)
(20)ASP.NET Core EF创建模型(必需属性和可选属性、最大长度、并发标记、阴影属性)
|
1月前
|
缓存 NoSQL Java
互联网大厂的缓存策略:抵抗超高并发的秘密武器,已开源!
该文探讨了如何在互联网大厂项目中设计和使用缓存,以应对百万级流量。作者以秒杀系统为例,提出采用本地缓存+分布式缓存的混合型缓存架构,强调了缓存设计在抗高并发流量中的重要性。文章详细阐述了秒杀系统对缓存的核心诉求,包括流量分层、读写策略和并发控制,以及如何处理缓存失效的情况。此外,还介绍了缓存的使用场景,如接口缓存策略,并分析了缓存集群方案、缓存交互流程和缓存刷新机制。最后,讨论了数据一致性问题和代码的扩展性实现。文中提供了开源的缓存方案链接,包括GitHub、Gitee和GitCode仓库。
58 0
|
1月前
|
开发框架 .NET Linux
【.NET Developer】已发布好的.NET Core项目文件如何打包为Docker镜像文件
该文介绍了如何不使用VS2019手动创建ASP.NET Core Blazor项目的Dockerfile并构建Docker镜像。首先,创建名为Dockerfile的文件,并复制提供的Dockerfile内容,该文件指定了基础镜像和工作目录。然后,通过CMD在项目目录下运行`docker build -t 自定义镜像名 .`来生成镜像。最后,使用`docker run`命令启动容器并验证项目运行。此外,文章还提到了将镜像推送到Azure Container Registry (ACR)的步骤。