新闻中心
.NET中的内存缓存(MemoryCache)是什么?如何为应用添加本地缓存?
MemoryCache是.NET中的进程内缓存机制,通过在应用程序内存中存储数据以提升性能。它属于Microsoft.Extensions.Caching.Memory命名空间,支持ASP.NET Core、控制台应用等多种场景。与分布式缓存不同,MemoryCache仅限当前实例使用,重启后数据丢失,多节点部署时存在不一致性。使用时需先在Program.cs中注册AddMemoryCache()服务,再通过依赖注入IMemoryCache接口进行操作。常用方法包括TryGetValue、Set、Remove以及GetOrCreate。可设置绝对过期或滑动过期策略来控制缓存生命周期,系统还会在内存压力高时自动清理。合理设计缓存键和过期时间可避免脏数据与内存溢出,显著提升应用响应速度。

.NET 中的 MemoryCache 是一个在应用程序运行时将数据存储在内存中的本地缓存机制。它允许你将频繁访问或计算开销较大的数据保存在内存中,从而减少数据库查询、文件读取或远程服务调用的次数,提升应用性能。
MemoryCache 是 .NET Framework 和 .NET Core/.NET 5+ 都支持的功能,属于 Microsoft.Extensions.Caching.Memory 命名空间,适用于 ASP.NET Core、控制台应用、Windows 服务等需要本地缓存的场景。
MemoryCache 的特点
它不是分布式缓存(如 Redis),而是进程内缓存,仅限当前服务器实例使用。这意味着:
- 速度快,数据直接在内存中读写
- 重启应用后数据丢失
- 多服务器部署时各节点缓存不一致
- 适合存储与当前实例相关的临时数据
如何为应用添加 MemoryCache
以 ASP.NET Core 项目为例,添加和使用 MemoryCache 分为以下几个步骤:
1. 安装依赖包(.NET 6 及以下可能需要)
大多数新版本已内置,但若提示找不到命名空间,可安装:
Microsoft.Extensions.Caching.Memory2. 在 Program.cs 中注册服务
在依赖注入容器中添加 MemoryCache 支持:
N世界
一分钟搭建会展元宇宙
138
查看详情
var builder = WebApplication.CreateBuilder(args); // 添加 MemoryCache 服务 builder.Services.AddMemoryCache(); var app = builder.Build();
3. 在控制器或服务中使用 IMemoryCache
通过构造函数注入 IMemoryCache 接口,进行缓存操作:
using Microsoft.Extensions.Caching.Memory;
public class WeatherController : ControllerBase
{
private readonly IMemoryCache _cache;
public WeatherController(IMemoryCache cache)
{
_cache = cache;
}
public IActionResult GetForecast()
{
const string cacheKey = "weather_forecast_2025";
// 尝试从缓存获取数据
if (!_cache.TryGetValue(cacheKey, out List<WeatherData> forecast))
{
// 缓存未命中:生成数据(例如查数据库)
forecast = GenerateWeatherData();
// 设置缓存选项
var cacheEntryOptions = new MemoryCacheEntryOptions()
.SetAbsoluteExpiration(TimeSpan.FromMinutes(30)) // 30分钟后过期
.SetSlidingExpiration(TimeSpan.FromMinutes(10)); // 10分钟内访问则延长
// 写入缓存
_cache.Set(cacheKey, forecast, cacheEntryOptions);
}
return Ok(forecast);
}
}
4. 常用缓存操作说明
- TryGetValue:尝试获取缓存项,返回布尔值表示是否存在
- Set:设置缓存值和过期策略
- Remove:手动删除某个键的缓存
- GetOrCreate / GetOrCreateAsync:更简洁的方式,自动处理“获取或创建”逻辑
例如使用 GetOrCreate:
var forecast = _cache.GetOrCreate(cacheKey, entry =>
{
entry.SetAbsoluteExpiration(TimeSpan.FromMinutes(30));
return GenerateWeatherData();
});
缓存过期策略建议
合理设置过期时间对缓存有效性至关重要:
- 绝对过期(Absolute Expiration):固定时间后失效,适合定时更新的数据
- 滑动过期(Sliding Expiration):每次访问刷新过期时间,适合热点数据
- 可同时设置两者,系统会取更早触发的条件
MemoryCache 会在内存压力大时自动清理部分条目,因此不能依赖其长期保存数据。
基本上就这些。只要注册服务并注入接口,就能快速为应用加上本地缓存能力,显著提升响应速度。关键是根据业务选择合适的缓存键和过期策略,避免脏数据或内存溢出。
以上就是.NET中的内存缓存(MemoryCache)是什么?如何为应用添加本地缓存?的详细内容,更多请关注其它相关文章!
# 应用程序
# 延庆区大型网站建设风格
# 正规网站建设课程总结
# 菏泽seo抖音系统
# 广州全网seo推广
# 网站怎么建设推广平台呢
# 陕西网站建设哪家好
# 从化外贸整合营销推广
# 秦皇岛大型网站建设调试
# 湖南专业网站建设哪个好
# 表白网站建设素材库
# 就能
# 有哪些
# 是一个
# 客户端
# redis
# 如何实现
# 重启
# 仅限
# 何为
# 2025
# red
# .net
# 数据丢失
# 热点
# microsoft
# win
# app
# windows
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
解决Python单元测试中Mock异常方法调用计数为零的问题
Node.js 中使用 node-cron 实现定时 API 数据抓取与处理
如何优雅地解决Livewire文件上传难题?SpatieLivewireFilepond让一切变得简单
mc.js游戏直达 mc.js网页免下载版本秒进地址
新手怎么开始学化妆 零基础化妆入门教程
12306怎么选座位选到安静区_12306选座安静区域选择策略
厨房不锈钢水槽发黑生锈怎么处理_水槽用可乐+锡纸2分钟抛亮如新
千牛数据看板网页版_千牛数据看板网页版访问方法
yandex入口引擎手机版 yandex安卓版下载入口
顺丰快件物流信息 官方网站查询入口
天眼查企业查询官网入口 天眼查官方网页版查询
C++如何操作注册表_Windows平台下C++读写注册表的API函数详解
C++如何解决segmentation fault_C++段错误调试与原因分析
PrimeNG Sidebar背景色自定义指南:CSS覆盖与主题化实践
Pyrogram与g4f集成:异步编程实践与常见错误解决
QQ邮箱官方网站登录入口_QQ邮箱网页版在线使用
Tabulator表格日期时间排序问题及自定义解决方案
蛙漫画网页版全站入口 蛙漫热门作品免费浏览
一加 14R 快充无反应_一加 14R 充电优化
Excel函数批量查找替换超快方法_Excel用REPLACE和FIND函数秒级替换
J*aScript中在Map循环中检测并处理空数组元素
在Socket.IO连接中实现Access Token自动更新与动态重连
在FastAPI中利用lifespan与依赖注入高效管理Redis连接池
怎样把文件彻底粉碎无法恢复_Windows下安全删除敏感数据【隐私保护】
Centos/Linux 系统下安装 composer 的完整步骤
Win11怎么安装Linux子系统 Win11 WSL2安装Ubuntu及环境配置指南
React Router v6 教程:构建认证保护的私有路由与重定向策略
利用Bokeh CustomJS动态控制DataTable列可见性
微信聊天记录怎么加密_微信聊天记录加密方法
J*aScript中向JSON对象添加新属性的正确姿势
向日葵客户端怎么进行远程CentOS控制_向日葵客户端远程CentOS控制操作教程
KFC套餐升级怎么获取优惠代码_KFC套餐升级活动与优惠代码获取方法
创客贴用户入口官网登录 创客贴网页版电脑版系统
CSS Box Model与弹性按钮:维持布局稳定的动画实践
J*aScript中高效清空DOM列表元素:解决for循环中断与任务管理问题
谷歌浏览器最新官方入口链接 谷歌浏览器网页版官网导航
随机参数递归函数的基准调用次数与时间复杂度探究
微博网页版首页入口 微博电脑端官网登录链接
Sublime Text怎么显示空格和制表符_Sublime显示不可见字符设置
如何修改开机登录密码_Windows账户安全设置超详细教程【必学】
C++如何检测键盘输入_C++ _kbhit与_getch函数非阻塞输入
Python实时数据流中的动态最值查找策略
Google翻译怎么语音输入_Google翻译语音输入功能使用与设置方法
CKEditor 5 自定义构建在React应用中渲染失败的调试与解决
必由学官网入口 必由学教师登录入口
qq邮箱发邮件给国外发不出去_QQ邮箱国际邮件发送失败原因与解决
Spring Boot内嵌服务器与J*a EE全栈特性:选择与部署策略
Win11怎么开启高性能模式_Windows 11电源计划优化设置
CSS Flexbox如何实现多行排列_flex-wrap wrap自动换行显示
漫蛙官网正版漫画入口 漫蛙2官方网页登录地址


2025-11-28
浏览次数:次
返回列表
分布式缓存不同,MemoryCache仅限当前实例使用,重启后数据丢失,多节点部署时存在不一致性。使用时需先在Program.cs中注册AddMemoryCache()服务,再通过依赖注入IMemoryCache接口进行操作。常用方法包括TryGetValue、Set、Remove以及GetOrCreate。可设置绝对过期或滑动过期策略来控制缓存生命周期,系统还会在内存压力高时自动清理。合理设计缓存键和过期时间可避免脏数据与内存溢出,显著提升应用响应速度。