当前位置: 首页 > article >正文

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

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

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

1. nuget包引入

必须引入两个包 至少在2024.11.7以上

<PackageReference Include="WBC66.Cache.Core" Version="2024.11.7" />
<PackageReference Include="WBC66.Autofac.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.kler.cn/a/383880.html

相关文章:

  • SpringSecurity(三)SpringBoot集成SpringSecurity实现认证授权
  • 软考:性能测试的几个方面
  • 组态软件的概念
  • 基于单片机的变频空调系统设计(论文+源码)
  • 智能网联汽车:人工智能与汽车行业的深度融合
  • 在AI时代,如何解决人的工作岗位被AI替代的问题?
  • 删除 需要来自XXXX的权限才能对此文件夹进行更改 文件的解决办法
  • Flutter自定义矩形进度条实现详解
  • macos中安装和设置ninja
  • 如何推进软硬件协同优化,点亮 AI 新时代?
  • 【人工智能学习推荐框架--及带实例教程】
  • 机器学习—在一个单层中的前向传播
  • 力扣(leetcode)题目总结——哈希表篇
  • 爬虫学习6
  • gerrit 搭建遇到的问题
  • mac 安装 nodemon
  • Day 52 || 739. 每日温度 、 496.下一个更大元素 I 、503.下一个更大元素II
  • 告别生硬电子音,这款TTS软件让语音转换更自然动听
  • 反射基础
  • 6-1.Java 面向对象 - 初级(对象与属性、对象与方法、递归、重载、可变参数、作用域、构造器、对象创建流程详解、this 关键字)