【库】Coravel Cache缓存
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 () => { return await Task.FromResult(DateTime.Now); }, TimeSpan.FromSeconds(10)); }); app.MapGet("/read", async (ICache cache) => { if (await cache.HasAsync("time")) { return await cache.GetAsync<DateTime>("time"); } else { return DateTime.MinValue; } }); app.Run();
ICache几个方法:
| 方法名 | 说明 | 
| Remember | 添加有时长的缓存数据 | 
| RememberAsync | 添加无时长的缓存数据,异步方法 | 
| Forever | 添加无时长的缓存数据 | 
| ForeverAsync | 添加无时长的缓存数据,异步方法 | 
| HasAnync | 判断有无缓存数据 | 
| GetAsync | 获取缓存数据 | 
| Flush | 清空所有缓存数据 | 
| Forget | 释放某个缓存数据 | 
当然,上面的例子是本地内存缓存,这对于分布式不友好,其实库里也提供了持久化的缓存机制,官方库提供了SqlServer和PostgreSQL两种持久化机制。如果想适配自己的库,那就实现ICache接口即可,这个接口的成员就是上面的表格中那些,分别完成对数据库或其他持久化库的封装即可。
ICache接口如下:
public interface ICache { 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); void Flush(); void Forget(string key); }
文章来源微信公众号
  想要更快更方便的了解相关知识,可以关注微信公众号 

    
****欢迎关注我的asp.net core系统课程****
《asp.net core精要讲解》 https://ke.qq.com/course/265696
《asp.net core 3.0》 https://ke.qq.com/course/437517
《asp.net core项目实战》 https://ke.qq.com/course/291868
《基于.net core微服务》 https://ke.qq.com/course/299524
《asp.net core精要讲解》 https://ke.qq.com/course/265696
《asp.net core 3.0》 https://ke.qq.com/course/437517
《asp.net core项目实战》 https://ke.qq.com/course/291868
《基于.net core微服务》 https://ke.qq.com/course/299524
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号