cole2295 / 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!

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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 China Foundation GitHub license FOSSA Status

CI Build Status

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

Nuget Packages

Core

Package Name Version Downloads
EasyCaching.Core

Provider

Package Name Version Downloads
EasyCaching.InMemory
EasyCaching.Redis
EasyCaching.Memcached
EasyCaching.SQLite
EasyCaching.HybridCache

Interceptor

Package Name Version Downloads
EasyCaching.Interceptor.Castle
EasyCaching.Interceptor.AspectCore

Serializer

Package Name Version Downloads
EasyCaching.Serialization.MessagePack
EasyCaching.Serialization.Json
EasyCaching.Serialization.Protobuf

Others

Package Name Version Downloads
EasyCaching.ResponseCaching

Basci 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 are samples show you how to config.

public class Startup
{
    //...
    
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();

        //1. In-Memory Cache
        services.AddDefaultInMemoryCache();
        
        //2. Redis Cache
        //services.AddDefaultRedisCache(option=>
        //{                
        //    option.Endpoints.Add(new ServerEndPoint("127.0.0.1", 6379));
        //    option.Password = "";
        //});
        
        //3. Memcached Cache
        //services.AddDefaultMemcached(option=>
        //{                
        //    option.AddServer("127.0.0.1",11211);        
        //});
        
        //4. SQLite Cache
        //services.AddSQLiteCache(option=>{});
    }
    
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        //3. Memcache Cache
        //app.UseDefaultMemcached();
    
        //4. SQLite Cache
        //app.UseSQLiteCache();
    }
}

Step 3 : Write code in you controller

[Route("api/[controller]")]
public class ValuesController : Controller
{
    private readonly IEasyCachingProvider _provider;

    public ValuesController(IEasyCachingProvider provider)
    {
        this._provider = provider;
    }

    [HttpGet]
    public string Get()
    {
        //Set
        _provider.Set("demo", "123", TimeSpan.FromMinutes(1));
            
        //Set Async
        await _provider.SetAsync("demo", "123", TimeSpan.FromMinutes(1));   
        
        //Get without data retriever
        var res = _provider.Get<string>("demo");
        
        //Get without data retriever Async
        var res = await _provider.GetAsync<string>("demo");
        
        //Get
        var res = _provider.Get("demo", () => "456", TimeSpan.FromMinutes(1));
        
        //Get Async    
        var res = await _provider.GetAsync("demo",async () => await Task.FromResult("456"), TimeSpan.FromMinutes(1));   
                
        //Remove
        _provider.Remove("demo");

        //Remove Async
        await _provider.RemoveAsync("demo");
           
        //Refresh
        _provider.Refresh("demo", "123", TimeSpan.FromMinutes(1));

        //Refresh Async
        await _provider.RefreshAsync("demo", "123", TimeSpan.FromMinutes(1)); 
        
        //RemoveByPrefix
        _provider.RemoveByPrefix("prefix");

        //RemoveByPrefixAsync
        await _provider.RemoveByPrefixAsync("prefix");

        //SetAll
        _provider.SetAll(new Dictionary<string, string>()
        {
            {"key:1","value1"},
            {"key:2","value2"}
        }, TimeSpan.FromMinutes(1));

        //SetAllAsync
        await _provider.SetAllAsync(new Dictionary<string, string>()
        {
            {"key:1","value1"},
            {"key:2","value2"}
        }, TimeSpan.FromMinutes(1));

        //GetAll
        var res = _provider.GetAll(new List<string> { "key:1", "key:2" });

        //GetAllAsync
        var res = await _provider.GetAllAsync(new List<string> { "key:1", "key:2" });
        
        //GetByPrefix
        var res = _provider.GetByPrefix<T>("prefix");
        
        //GetByPrefixAsync
        var res = await _provider.GetByPrefixAsync<T>("prefix");
        
        //RemoveAll
        _provider.RemoveAll(new List<string> { "key:1", "key:2" });

        //RemoveAllAsync
        awiat _provider.RemoveAllAsync(new List<string> { "key:1", "key:2" });
        
    }
}

Documentation

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

Examples

See sample

Todo List

Caching Providers

  • Memory
  • Redis
  • 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
  • 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

  • Redis
  • RabbitMQ

Others

  • Configuration
  • Caching Region
  • Caching Statistics
  • UI Manager
  • Logger
  • Caching Warm Up
  • ...

Contributing

Pull requests, issues and commentary!

License

FOSSA Status

About

: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!

License:MIT License


Languages

Language:C# 99.5%Language:Batchfile 0.5%