Fork me on GitHub

【库】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);
    }
复制代码

  文章来源微信公众号

  想要更快更方便的了解相关知识,可以关注微信公众号 

 

posted @   桂素伟  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
历史上的今天:
2022-02-23 自定义EventSource(四)IncrementingPollingCounter
2022-02-23 自定义EventSource(三)IncrementingEventCounter
2022-02-23 自定义EventSource(二)PollingCounter
2022-02-23 自定义EventSource(一)EventCounter
点击右上角即可分享
微信分享提示