EasyCaching用作本地缓存的实用小结
使用内存
<PackageReference Include="EasyCaching.InMemory" Version="1.9.2" />
services.AddEasyCaching(options =>
{
options.UseInMemory("m0");
});
使用Sqlite
<PackageReference Include="EasyCaching.SQLite" Version="1.9.2" />
services.AddEasyCaching(option =>
{
option.UseSQLite(config =>
{
config.DBConfig = new SQLiteDBOptions {
FileName = "my.db",
CacheMode = SqliteCacheMode.Default,
OpenMode = SqliteOpenMode.ReadWriteCreate
};
},"m1");
});
使用LiteDB
<PackageReference Include="EasyCaching.LiteDB" Version="1.9.2" />
services.AddEasyCaching(option =>
{
option.UseLiteDB(config =>
{
config.DBConfig = new LiteDBDBOptions { FileName = "s1.ldb" };
},"m2");
});
扩展方法
internal static class ServiceProviderExtention
{
public static IEasyCachingProvider GetCaching(this IServiceProvider serviceProvider)
{
var factory = serviceProvider.GetRequiredService<IEasyCachingProviderFactory>();
return factory.GetCachingProvider("m0");
}
}
实用例子
#region 同步方法
cache.Set("key", "value", TimeSpan.FromMinutes(1));
var res = cache.Get("key", () => "value456", TimeSpan.FromMinutes(1));
var res = cache.Get<string>("key");
cache.Remove("key");
#endregion 同步方法
#region 异步方法
await cache.SetAsync("key", "value", TimeSpan.FromMinutes(1));
var res = await cache.GetAsync("key",async () => await Task.FromResult("value456"), TimeSpan.FromMinutes(1));
var res = await cache.GetAsync<string>("key");
await cache.RemoveAsync("key");
#endregion 异步方法
#region 按前缀删除
cache.RemoveByPrefix("prefix");
await cache.RemoveByPrefixAsync("prefix");
#endregion 按前缀删除
```