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

Posted dotNET跨平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ASP.NET Core中使用EasyCaching作为缓存抽象层相关的知识,希望对你有一定的参考价值。

简介

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

github地址

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 Caching
        services.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()
            // HMSet
        var res = _provider.HMSet(cacheKey, new Dictionary<string, string>
        
            "a1","v1","a2","v2"
        );        //others ...
    

以上是关于ASP.NET Core中使用EasyCaching作为缓存抽象层的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Core中的缓存[1]:如何在一个ASP.NET Core应用中使用缓存

ASP.NET Core 动作结果 - ASP.NET Core 基础教程 - 简单教程,简单编程

在 ASP.NET Core 6.0 中使用 Serilog

ASP.NET Core 1.0 中使用 Swagger 生成文档

ASP.NET Core Web 应用程序系列- 在ASP.NET Core中使用Autofac替换自带DI进行批量依赖注入(MVC当中应用)

ASP.NET Core 1.0 中使用Log日志