目录

测试ASP.NET Core项目调用EasyCaching的基本用法(InMemory)

EasyCaching属于开源缓存库,支持基本缓存方式及高级缓存用法,提高用户操作缓存的效率。EasyCaching支持的缓存方式包括以下类型,本文学习最基础的InMemory方式的基本用法。
  EasyCaching.InMemory包属于基于内存的缓存库,使用的是程序所在计算机的内存,一般也称作本地缓存。

新建ASP.NET Core WebApi项目,在Nuget包管理器中搜索并安装EasyCaching.InMemory包:

  接着需要在Program.cs文件中添加EasyCaching服务,主要是调用EasyCaching.Core程序集中的EasyCachingServiceCollectionExtensions.AddEasyCaching函数添加服务,最简单的用法如下所示:

csharp 复制代码
builder.Services.AddEasyCaching(options =>
{
    options.UseInMemory("default");
});

调用UseInMemory函数时,除了实例名称,还可以进行更详细的参数设置,EasyCaching支持在UseInMemory函数中进行设置,也支持在appsettings.json中设置参数后通过UseInMemory函数读取配置,如下图所示,更详细的说明见参考文献3。

  注册服务后,即可在控制器类中使用,在控制器构造函数中传入IEasyCachingProvider接口,该接口继承自IEasyCachingProviderBase,后者包含常用的缓存操作函数,如下图所示:

  编写简单的测试控制器类进行测试,代码如下图所示:

csharp 复制代码
public class EasyCachingController : ControllerBase
{
    private readonly IEasyCachingProvider _provider;

    public EasyCachingController(IEasyCachingProvider provider)
    {
        _provider = provider;
    }

    [HttpGet]
    public string GetValue(string key)
    {
        if(!_provider.Exists(key))
        {
            throw new Exception($"不存在key{key}");
        }
       return _provider.Get<string>(key).Value;
    }

    [HttpPost]
    public void SaveData(string key,string value)
    {
        _provider.Set<string>(key, value, new TimeSpan(0, 0, 30));
    }
}

直接在浏览器中测试WebApi接口,如下图所示,测试SaveData函数:

  点击Execute按钮后报如下错误,应该是跨域访问的问题,本文中直接按《ASP.NET Core WebAPI从HTTPS调整为HTTP启动》中的方式删除了https相关内容后,即可正常调用函数。

  接着调用GetValue函数获取值,如下图所示,可以正常返回指定key的值。

参考文献:

1\]https://github.com/dotnetcore/EasyCaching \[2\]https://easycaching.readthedocs.io/en/latest/ \[3\]https://easycaching.readthedocs.io/en/latest/In-Memory/

本文是转载文章,点击查看原文
如有侵权,请联系 xyy@jishuzhan.net 删除
相关推荐
EdisonZhou15 天前
使用MCP C# SDK开发MCP Server + Client
llm·aigc·asp.net core·.net core
超软毛毛虫1 个月前
ASP.NET Core 模型验证消息的本地化新姿势
asp.net core·localization
lixww.cn2 个月前
ASP.NET Core用MediatR实现领域事件
ddd·asp.net core·mediatr
宇内流云2 个月前
Tinyfox 简易教程之:Hello World!
websocket·webapi·tinyfox
lixww.cn2 个月前
ASP.NET Core SignalR向部分客户端发消息
javascript·websocket·vue·asp.net core·signalr
lixww.cn2 个月前
ASP.NET Core SignalR的协议协商
asp.net core·signalr
lixww.cn2 个月前
ASP.NET Core SignalR的分布式部署
redis·消息队列·asp.net core·signalr
lixww.cn2 个月前
ASP.NET Core对JWT的封装
asp.net core·jwt·authorize
lixww.cn2 个月前
ASP.NET Core JWT Version
asp.net core·jwt·filter·identity
lixww.cn2 个月前
ASP.NET Core JWT
asp.net core·jwt