NetCore使用Aop和内存缓存对接口、方法进行数据缓存

news/2024/11/9 2:35:56/

通过Aop+内存缓存对接口、方法进行缓存

源码地址https://gitee.com/wangbenchi66/nuget

1. nuget包引入

必须引入包 至少在2024.11.7以上

<PackageReference Include="WBC66.Cache.Core" Version="2024.11.7" />

必须开启内存缓存 否则后续步骤无法正常进行

//开启内存缓存
builder.Services.AddMemoryCacheSetup();

2. 对方法使用内存缓存

//使用autofac(内部会自动进行程序集扫描注入,不需要手动注入)
builder.Host.AddAutofacHostSetup(builder.Services, options =>
{//开启内存缓存拦截器(带有IProxyService接口的类将会被拦截),带有CacheResultAttribute特性的方法将会被缓存options.AddMemoryCacheResultAop();
});

3. 对控制器接口使用内存缓存

builder.Services.AddControllers(options =>
{//添加自定义的缓存过滤器options.Filters.Add<CacheResultFilter>();
});

方法缓存使用示例

//同一个方法不同参数会进行多次缓存
//接口注入直接继承IProxyService接口(继承接口后就不需要再手动注入了),方法上使用CacheResultAttribute特性即可
public class CacheResultService : ICacheResultService
{//缓存5秒[CacheResult(5)]public Student GetStudentAsync(string name){return new Student { Name = name };}
}
public interface ICacheResultService : IProxyService
{Student GetStudentAsync(string name);
}

控制器缓存使用示例

[HttpGet]
[CacheResult(5)]//缓存5秒
public object Get()
{_cacheResultService.GetStudentAsync("这是参数");return "ok";
}

http://www.ppmy.cn/news/1545509.html

相关文章

【动手学运动规划】 4.1 图搜的基础

&#x1f3f0;代码及环境配置&#xff1a;请参考 环境配置和代码运行! 4.1.1 基础概念 4.1.1.1 Configuration Space(配置空间) configuration: 机器人上每一点位置的完整说明degrees of freedom: 机器人能够独立移动或旋转的关节数量&#xff08;下图所示有4个自由度&#x…

善用Git LFS来降低模型文件对磁盘的占用

将讲一个实际的例子&#xff1a;对于模型文件&#xff0c;动辄就是好几个G&#xff0c;而有的仓库更是高达几十G&#xff0c;拉一个仓库到本地&#xff0c;稍不注意直接磁盘拉满都有可能。 比如&#xff1a;meta-llama-3.1-8b-instruct&#xff0c;拉到本地后发现居然占用了60G…

ubuntu切换不同版本的python

有时候编译安卓或者SDK代码&#xff0c;如果报错&#xff0c;表示 Python 的替代版本尚未被update-alternatives 命令识别&#xff0c;此时需要切换到对应的版本才能正常编译。比如我在编译内核的时候出现了以下报错&#xff1a; CC security/selinux/netif.oCC net/…

【Pytorch】model.eval()与model.train()

model.train()&#xff1a; 作用是启用Batch Normalization 和 Dropout 如果模型中有BN层(Batch Normalization&#xff09;和Dropout&#xff0c;需要在训练时添加model.train()。model.train()是保证BN层能够用到每一批数据的均值和方差。对于Dropout&#x…

Vue3安装、创建到使用

vue安装 npm install vuenext # 全局安装 vue-cli npm install -g vue/cli #更新插件 项目中运行 vue upgrade --nextvue create 命令 vue create [options] <app-name> options 选项可以是&#xff1a; -p, --preset <presetName>&#xff1a; 忽略提示符并使用已…

Git+Jenkins基本使用

Jenkins是一个开源的实现持续集成的软件工具 持续集成的作用 保证团队开发人员提交代码的质量&#xff0c;减轻软件发布的压力自动完成各个环节的任务&#xff0c;无需太多的人工干预&#xff0c;有利于减少重复过程&#xff0c;以节省时间、费用和工作量 持续集成的特点 是…

【ARM Linux 系统稳定性分析入门及渐进 1.1 -- Crash 工具功能概述】

文章目录 Crasg 功能概述Crash 核心功能Crash 版本独立性为什么使用 Crash 工具?Crash 工具的优势Crash 工具编译debug 信息保留Crasg 功能概述 crash 工具是一个强大的 Linux 内核调试和分析工具,最初基于 SVR4 UNIX 的 crash 命令,但经过显著增强,完全与 GNU GDB 调试器…

《重学Java设计模式》之 单例模式

单例模式主要解决的是&#xff0c;一个全局使用的类频繁的创建和消费&#xff0c;从而提升提升整体的代码的性能。 单例模式原则 私有构造。&#xff08;阻止类被常规方法实例化&#xff09;以静态方法或者枚举返回实例。&#xff08;保证实例的唯一性&#xff09;确保实例只…