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!
Platform | Build Server | Status |
---|---|---|
AppVeyor | Windows | |
Travis | Linux/OSX |
Package Name | Version | Downloads |
---|---|---|
EasyCaching.Core |
Package Name | Version | Downloads |
---|---|---|
EasyCaching.InMemory | ||
EasyCaching.Redis | ||
EasyCaching.Memcached | ||
EasyCaching.SQLite | ||
EasyCaching.HybridCache |
Package Name | Version | Downloads |
---|---|---|
EasyCaching.Interceptor.Castle | ||
EasyCaching.Interceptor.AspectCore |
Package Name | Version | Downloads |
---|---|---|
EasyCaching.Serialization.MessagePack | ||
EasyCaching.Serialization.Json | ||
EasyCaching.Serialization.Protobuf |
Package Name | Version | Downloads |
---|---|---|
EasyCaching.ResponseCaching |
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
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();
}
}
[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
await _provider.RemoveAllAsync(new List<string> { "key:1", "key:2" });
}
}
For more helpful information about EasyCaching, please click here for EasyCaching's documentation.
See sample
- Memory
- Redis
- SQLite
- Memcached
- Hybrid(Combine local caching and distributed caching)
- Disk
- Others...
- 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...
- BinaryFormatter
- MessagePack
- Json
- ProtoBuf
- Others...
- AspectCore
- Castle
- Others ..
- EasyCachingAble
- EasyCachingPut
- EasyCachingEvict
Note: Not support Hybird Caching provider yet.
- Redis
- RabbitMQ
- Configuration
- Caching Region
- Caching Statistics
- UI Manager
- Logger
- Caching Warm Up
- ...
Pull requests, issues and commentary!