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

  EasyCaching中的包EasyCaching.Redis和EasyCaching.CSRedis都支持集成Redis实现缓存,前者基于StackExchange.Redis,而后者基于CSRedisCore,本文学习使用EasyCaching.Redis包连接redis服务实现缓存的基本用法。
  新建WebApi项目,在Nuget包管理器中搜索并安装EasyCaching.Redis包:

在这里插入图片描述
  接着在Program.cs文件中注册服务,主要使用AddEasyCaching和UseRedis函数,使用示例如下所示(示例参考自参考文献3,不过代码有问题,后续会提到),连接参数可以通过UseRedis配置,也可以通过配置文件配置,详细的说明见参考文献3。

builder.Services.AddEasyCaching(options =>
{options.UseRedis(config =>{config.DBConfig.Endpoints.Add(new ServerEndPoint("127.0.0.1", 6379));});
});

  在控制器类中使用时,可以使用IEasyCachingProvider接口,此时使用方式与上一篇文章相同,在此不再赘述,也可以使用IRedisCachingProvider接口,该接口中的函数与redis控制台命令相似,使用更加方便,测试用例如下所示:

public class EasyCachingController : ControllerBase
{private readonly IRedisCachingProvider _provider;public EasyCachingController(IRedisCachingProvider provider){_provider = provider;}[HttpGet]public string GetValue(string key){if(!_provider.KeyExists(key)){throw new Exception($"不存在key{key}");}return _provider.StringGet(key);}[HttpPost]public void SaveData(string key,string value){_provider.StringSet(key, value);}
}

  运行WebApi,在浏览器中调用GetValue测试,测试过程中报如下错误:“Value cannot be null.(Parameter"serializers”),百度错误信息,找了很多文章都没有看到类似的错误解决办法。
在这里插入图片描述
  最终还是从开源博客项目Blog .NET Core源码中找到的问题原因,首先需要安装序列化包,主要包括5类,如下图所示。本文中安装的是包EasyCaching.Serialization.Json。
在这里插入图片描述

  其次将Program.cs文件中注册EasyCaching服务的代码修改为如下方式,主要是增加了options.WithJson函数(如果是安装的其它序列化包,则需调用options中对应的函数)。同时WithJson函数中的参数(服务实例名称),要与UseRedis函数中指定的实例名称保持一致,否则后续还会报错。

builder.Services.AddEasyCaching(options =>
{options.UseRedis(config =>{config.DBConfig.Endpoints.Add(new ServerEndPoint("127.0.0.1", 6379));});options.WithJson("DefaultRedis");
});

  再次运行项目即可正常调用WebApi,测试截图如下图所示,通过调用GetValue可以获取redis服务中保存的指定键的值。
在这里插入图片描述

  
  

参考文献:
[1]https://github.com/dotnetcore/EasyCaching
[2]https://easycaching.readthedocs.io/en/latest/
[3]https://easycaching.readthedocs.io/en/latest/Redis/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/662631.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

体育馆运动场地预定小程序的独特优势与用户体验

随着人们健康意识的提高,体育馆成为了大家进行锻炼和运动的重要场所。为了更好地满足用户的需求,体育馆需要开发一款预定场地的小程序,为用户提供便捷、高效的预定服务。本文将介绍如何使用乔拓云平台开发体育馆运动场地预定小程序&#xff0…

#10外部网页跳转vue3+SpringMVC解码GBK编码的参数

目录 1、背景 2、失败尝试之iconv-lite 2.1、安装和使用 2.2、遇到的问题 2.3、解决方案(vite-plugin-node-polyfills) 2.4、测试 3、成功尝试 3.1、前端参数读取方式 3.2、后端解码 1、背景 外部jsp页面中编码方式为GBK,跳转到vue页面时如果使用decodeURI…

vue不同环境配置不同打包命令

这个需求非常普遍,通常情况我们在开发的时候一般会有三个环境:开发环境、测试环境、生产环境,我们一步步来看下。 vue环境变量是什么? 指的是在不同地方(开发环境、测试环境、生产环境),变量就…

【Node系列】REPL详解

文章目录 一、REPL介绍二、REPL案例三、REPL命令四、node介绍五、相关链接 一、REPL介绍 Node.js REPL(Read-Eval-Print Loop)是一个交互式环境,允许用户在命令行中直接输入JavaScript代码并立即看到结果。REPL是Node.js的一个重要组成部分&…

代码随想录算法训练营Day45|70. 爬楼梯(进阶版)、322. 零钱兑换、279.完全平方数

目录 70. 爬楼梯(进阶版) 前言 思路 算法实现 322. 零钱兑换 前言 思路 279.完全平方数 前言 思路 算法实现 总结 70. 爬楼梯(进阶版) 题目链接 文章链接 前言 本题是70. 爬楼梯问题的进阶版,每次可以跳跃的…

混合攻击流量对系统安全性的综合评估

很多针对安全设备的测试仅仅针对安全设备本身的防护,比如防御的漏洞攻击行为、恶意代码是否足够多,能否抵御大流量的L23层DDoS或者应用层的DDoS攻击,却没有考虑是否防御攻击时,一并阻止了正常的业务流量。以下图为例,当…

Spring-mvc、Spring-boot中如何在调用同类方法时触发AOP

1. 问题描述 Spring-mvc和Spring-boot中aop可以实现代理的功能,我们可以借此实现事务和日志记录或者限流等多种操作。但是,如果你在一个方法中调用其同类下的其他方法的时候不会触发AOP。本文主要说明其原因及解决办法和实现原理。 2. 原因 AIOP的本质是…

从零开始学Linux之gcc链接

目录 创建静态库并使用 创建动态库(共享库)并使用 链接:将.o目标文件链接起来生成一个可执行程序文件,可分为静态链接和动态链接 静态链接:链接器会找出程序所需的函数,然后将它们拷贝到执行文件,由于这种拷贝是完整…

apt 指定版本

apt 指定版本 https://linuxcpp.0voice.com/?id117477 在使用apt命令安装软件时,可以通过指定版本来选择要安装的软件版本。具体步骤如下: 首先,确保你的系统已经添加了相应的软件源。 使用apt-cache policy命令查看可用版本列表&#xf…

vue3前端开发,element-plus前端框架探秘:scope对象

vue3前端开发,element-plus前端框架探秘:scope对象!我们经常需要对当前行的数据进行操作,比如增加,删除,编辑等,为此我们需要传递当前行所对应的唯一主键,通常情况下,当前行对应的业务主键是id属…

麒麟系统—— openKylin 安装 Maven

麒麟系统—— openKylin 安装 Maven 一、准备工作1. 确保麒麟系统 openKylin 已经安装完毕。2. 确保 java 已经安装完毕 二、下载Maven三、解压 Maven 与环境配置解压配置环境变量验证 最终:介绍配置的其他参数使用 本文将分享如何在麒麟操作系统 openKylin 上安装…

一些大语言模型(LLM)相关的开源项目

一些大语言模型(LLM)相关的开源项目 更多文章访问: https://www.cyisme.top 因为站内限制问题,有些图片无法显示,导致阅读体验较差,可以访问原文:《一些大语言模型(LLM)相关的开源项…

Json序列化和反序列化 笔记

跟着施磊老师学C 下载&#xff1a;GitHub - nlohmann/json: JSON for Modern C 在single_include/nlohmann里头有一个json.hpp&#xff0c;把它放到我们的项目中就可以了 #include "json.hpp" using json nlohmann::json;#include <iostream> #include <…

Unity_使用Shader实现玻璃和镜面效果

效果图如下&#xff1a; 玻璃效果图 镜面效果图 Step1 搭建场景→镜子使用Quad代替&#xff0c;放置在需要反射的墙面→创建新的材质和Shader Step2 墙壁外创建Camera&#xff0c;用来渲染物体后方的视图→创建RenderTexture&#xff0c;赋于该相机 Step3 Shader的编写如下…

PyTorch][chapter 13[李宏毅深度学习][Semi-supervised Linear Methods-2]

前言&#xff1a; 接上篇CSDN 这里面重点讲下面4个方面 目录&#xff1a; PCA-Another Point of view&#xff08;SVD&#xff09; PCA 和 AutoEncoder 的关系 PCA 的缺点 PCA Python 例子 一 PCA-Another Point of view 以手写数字7的图像为例&#xff0c;它由不…

某赛通电子文档安全管理系统 29处 反序列化RCE漏洞复现

0x01 产品简介 某赛通电子文档安全管理系统(简称:CDG)是一款电子文档安全加密软件,该系统利用驱动层透明加密技术,通过对电子文档的加密保护,防止内部员工泄密和外部人员非法窃取企业核心重要数据资产,对电子文档进行全生命周期防护,系统具有透明加密、主动加密、智能…

RabbitMQ控制台的基本使用

启动RabbitMQ后&#xff0c;浏览器 http://localhost:15672 打开RabbitMQ的控制台页面后&#xff0c;登录默认账户guest。 一. 添加队列 控制台选择队列&#xff0c;然后选择添加队列&#xff0c;队列类型默认经典类型&#xff0c;然后输入队列名称&#xff0c;最后添加队列。…

百度输入法往选字框里强塞广告

关注卢松松&#xff0c;会经常给你分享一些我的经验和观点。 国内几乎100%的输入法都有广告&#xff0c;只是你们没发现而已&#xff01;&#xff01;&#xff01; 百度输入法居然在输入法键盘上推送广告&#xff0c;近日&#xff0c;博主阑夕 表示&#xff0c;V2EX论坛上有…

2024年美国大学生数学建模竞赛F题思路分析与数据

题目 非法野生动物贸易对环境造成了负面影响&#xff0c;并威胁全球生物多样性。据估计&#xff0c;其涉及高达265亿美元的年交易额&#xff0c;被认为是全球所有非法交易中的第四大。[1] 你需要开发一个基于数据驱动的5年项目&#xff0c;旨在显著减少非法野生动物贸易。你的…

PFA氟气吸收装装置耐强酸PFA气体洗涤装置本底纯净

PFA氢气吸收装置在PFA尾气处理中扮演着重要的角色。PFA&#xff08;可溶性聚四氟乙烯&#xff09;是一种聚合物材料&#xff0c;具有良好的化学惰性和耐腐蚀性。在半导体工业过程中&#xff0c;PFA尾气中可能含有氢气等有害气体&#xff0c;需要进行处理以确保环境安全和合规性…