Coravel 透過使高級應用程式功能(如任務/作業排程、排隊、緩存、信件(以及更多!))易於存取且易於使用,幫助開發人員快速啟動並執行 .NET 應用程式。具有簡單、富有表現力和直接的語法。
Coravel非常簡單,透過Rember來保存緩存數據,同時可以設定緩存的時長,然後透過Get來獲取緩存。
using Coravel;
using Coravel.Cache.Interfaces;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddCache();
var app = builder.Build();
app.MapGet("/add", async (ICache cache) =>
{
await cache.RememberAsync("time", async () =>
{
returnawait Task.FromResult(DateTime.Now);
}, TimeSpan.FromSeconds(10));
});
app.MapGet("/read", async (ICache cache) =>
{
if (await cache.HasAsync("time"))
{
returnawait cache.GetAsync<DateTime>("time");
}
else
{
return DateTime.MinValue;
}
});
app.Run();
ICache幾個方法:
方法名
|
說明
|
Remember
| 添加有時長的緩存數據 |
RememberAsync
| 添加無時長的緩存數據,異步方法 |
Forever
| 添加無時長的緩存數據 |
ForeverAsync
| 添加無時長的緩存數據 ,異步方法 |
HasAnync
|
判斷有無緩存數據
|
GetAsync
|
獲取緩存數據
|
Flush
|
清空所有緩存數據
|
Forget
|
釋放某個緩存數據
|
當然,上面的例子是本地記憶體緩存,這對於分布式不友好,其實柯瑞也提供了持久化的緩存機制,官方庫提供了SqlServer和PostgreSQL兩種持久化機制。如果想適配自己的庫,那就實作ICache介面即可,這個介面的成員就是上面的表格中那些,分別完成對資料庫或其他持久化庫的封裝即可。
ICache介面如下:
publicinterfaceICache
{
TResult Remember<TResult>(string key, Func<TResult> cacheFunc, TimeSpan expiresIn);
Task<TResult> RememberAsync<TResult>(string key, Func<Task<TResult>> cacheFunc, TimeSpan expiresIn);
TResult Forever<TResult>(string key, Func<TResult> cacheFunc);
Task<TResult> ForeverAsync<TResult>(string key, Func<Task<TResult>> cacheFunc);
Task<bool> HasAsync(string key);
Task<TResult> GetAsync<TResult>(string key);
voidFlush();
voidForget(string key);
}