
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!
CI Build Status
Platform | Build Server | Master Status | Dev Status |
---|---|---|---|
:--- | :--- | :--- | :--- |
Github Action | Linux/Windows |
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 | ||
EasyCaching.Disk | ||
EasyCaching.LiteDB | ||
EasyCaching.Serialization.SystemTextJson |
Basic Usages
Step 1 : Install the package
Choose caching provider that you need and install it via Nuget.
- ``` sh
- Install-Package EasyCaching.InMemory
- Install-Package EasyCaching.Redis
- Install-Package EasyCaching.SQLite
- Install-Package EasyCaching.Memcached
- ```
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.
- ``` cs
- 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
- ``` cs
- [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
EasyCaching.Extensions
EasyCaching.Extensions.EasyCompressor
Examples
See sample
Todo List
See ToDo List
Contributing
Pull requests, issues and commentary!