Skip to content

💥 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

Notifications You must be signed in to change notification settings

dotnetcore/EasyCaching

Repository files navigation

Image

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

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

CI Build Status

Platform Build Server Master Status Dev Status
Github Action Linux/Windows Build&Test Build&Test

Nuget Packages

Package Name Version Downloads
EasyCaching.Core Image Image
EasyCaching.InMemory Image Image
EasyCaching.Redis Image Image
EasyCaching.Memcached Image Image
EasyCaching.SQLite Image Image
EasyCaching.HybridCache Image Image
EasyCaching.CSRedis Image Image
EasyCaching.FreeRedis Image Image
EasyCaching.FasterKv Image Image
EasyCaching.Disk Image Image
EasyCaching.LiteDB Image Image
EasyCaching.Interceptor.Castle Image Image
EasyCaching.Interceptor.AspectCore Image Image
EasyCaching.Serialization.MessagePack Image Image
EasyCaching.Serialization.Json Image Image
EasyCaching.Serialization.SystemTextJson Image Image
EasyCaching.Serialization.Protobuf Image Image
EasyCaching.Serialization.MemoryPack Image Image
EasyCaching.Bus.RabbitMQ Image Image
EasyCaching.Bus.RabbitMQStream Image Image
EasyCaching.Bus.Redis Image Image
EasyCaching.Bus.CSRedis Image Image
EasyCaching.Bus.ConfluentKafka Image Image
EasyCaching.Bus.Zookeeper Image Image
EasyCaching.ResponseCaching Image Image

Basic Usages

Step 1 : Install the package

Choose caching provider that you need and install it via Nuget.

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

Step 2 : Configure Startup class

Each caching provider has it's own configuration options.

Here is a sample configuration for InMemory and Redis caching provider.

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

            // // use memory cache with your own configuration
            // options.UseInMemory(config => 
            // {
            //     config.DBConfig = new InMemoryCachingOptions
            //     {
            //         // scan time, default value is 60s
            //         ExpirationScanFrequency = 60, 
            //         // total count of cache items, default value is 10000
            //         SizeLimit = 100 
            //     };
            //     // the max random second will be added to cache's expiration, default value is 120
            //     config.MaxRdSecond = 120;
            //     // whether enable logging, default is false
            //     config.EnableLogging = false;
            //     // mutex key's alive time(ms), default is 5000
            //     config.LockMs = 5000;
            //     // when mutex key alive, it will sleep some time, default is 300
            //     config.SleepMs = 300;
            // }, "m2");

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

Step 3 : Write code in your 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

Detailed EasyCaching documentation can be found here.

Extension Libs

Package Name Downloads Description
EasyCaching.Extensions.EasyCompressor Image Compress your cache objects to speedup transferring data over network, reduce bandwidth usage, and memory usage of cache server
EasyCaching.Extensions EasyCaching integration for CAP, WebApiClient, IDistributedCache, ...

Examples

See sample

Todo List

See ToDo List

Contributing

Pull requests, issues and commentary!

License

FOSSA Status

About

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

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published