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

简介

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

github地址

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

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 ...
    }
}