/EasyCaching

:boom: EasyCaching is an open source caching library that contains basic usages and some advanced usages of caching which can help us to handle caching more easier!

Primary LanguageC#MIT LicenseMIT

EasyCaching is an open source caching library that contains basic usages and some advanced usages of caching which can help us to handle caching more easier!

Coverage Status Member project of .NET Core Community GitHub license FOSSA Status

CI Build Status

Platform Build Server Master Status Dev Status
AppVeyor Windows/Linux Build status Build status
Travis Linux/OSX Build Status Build Status

Nuget Packages

Package Name Version Downloads
EasyCaching.Core
EasyCaching.InMemory
EasyCaching.Redis
EasyCaching.Memcached
EasyCaching.SQLite
EasyCaching.HybridCache
EasyCaching.CSRedis
EasyCaching.Interceptor.Castle
EasyCaching.Interceptor.AspectCore
EasyCaching.Serialization.MessagePack
EasyCaching.Serialization.Json
EasyCaching.Serialization.Protobuf
EasyCaching.Bus.RabbitMQ
EasyCaching.Bus.Redis
EasyCaching.Bus.CSRedis
EasyCaching.ResponseCaching

Basic Usages

Step 1 : Install the package

Choose one kinds of caching type that you needs and install it via Nuget.

Install-Package EasyCaching.InMemory
Install-Package EasyCaching.Redis
Install-Package EasyCaching.SQLite
Install-Package EasyCaching.Memcached

Step 2 : Config in your Startup class

Different types of caching hvae their own way to config.

Here is a sample show you how to config.

public class Startup
{
    //...
    
    public void ConfigureServices(IServiceCollection services)
    {
        //configuration
        services.AddEasyCaching(option=> 
        {
            //use memory cache that named default
            option.UseInMemory("default");

            //use redis cache that named redis1
            option.UseRedis(config => 
            {
                config.DBConfig.Endpoints.Add(new ServerEndPoint("127.0.0.1", 6379));
            }, "redis1")
            .WithMessagePack()//with messagepack serialization
            ;            
        });    
    }    
}

Step 3 : Write code in you controller

[Route("api/[controller]")]
public class ValuesController : Controller
{
    // //when using single provider
    // private readonly IEasyCachingProvider _provider;
    //when using multiple provider
    private readonly IEasyCachingProviderFactory _factory;

    public ValuesController(
        //IEasyCachingProvider provider, 
        IEasyCachingProviderFactory factory
        )
    {
        //this._provider = provider;
        this._factory = factory;
    }

    [HttpGet]
    public string Handle()
    {
        //var provider = _provider;
        //get the provider from factory with its name
        var provider = _factory.GetCachingProvider("redis1");    

        //Set
        provider.Set("demo", "123", TimeSpan.FromMinutes(1));
            
        //Set Async
        await provider.SetAsync("demo", "123", TimeSpan.FromMinutes(1));                  
    }
}

Documentation

For more helpful information about EasyCaching, please click here for EasyCaching's documentation.

Examples

See sample

Todo List

Caching Providers

  • Memory
  • Redis(Based on StackExchange.Redis)
  • Redis(Based on csredis)
  • SQLite
  • Memcached
  • Hybrid(Combine local caching and distributed caching)
  • Disk
  • Others...

Basic Caching API

  • Get/GetAsync(with data retriever)
  • Get/GetAsync(without data retriever)
  • Set/SetAsync
  • Remove/RemoveAsync
  • Refresh/RefreshAsync
  • RemoveByPrefix/RemoveByPrefixAsync
  • SetAll/SetAllAsync
  • GetAll/GetAllAsync
  • GetByPrefix/GetByPrefixAsync
  • RemoveAll/RemoveAllAsync
  • GetCount
  • Flush/FlushAsync
  • TrySet/TrySetAsync
  • Others...

Serializer Extensions

  • BinaryFormatter
  • MessagePack
  • Json
  • ProtoBuf
  • Others...

Caching Interceptor

  • AspectCore
  • Castle
  • Others ..
  1. EasyCachingAble
  2. EasyCachingPut
  3. EasyCachingEvict

Note: Not support Hybird Caching provider yet.

Caching Bus

Others

  • Configuration
  • Caching Region (one region with an instance of provider)
  • Caching Statistics
  • UI Manager
  • Logger
  • Caching Warm Up
  • ...

Contributing

Pull requests, issues and commentary!

License

FOSSA Status