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 服务等需要本地缓存的场景。
它不是分布式缓存(如 Redis),而是进程内缓存,仅限当前服务器实例使用。这意味着:
以 ASP.NET Core 项目为例,添加和使用 MemoryCache 分为以下几个步骤:
大多数新版本已内置,但若提示找不到命名空间,可安装:
Microsoft.Extensions.Caching.Memory在依赖注入容器中添加 MemoryCache 支持:
var builder = WebApplication.CreateBuilder(args); // 添加 MemoryCache 服务 builder.Services.AddMemoryCache(); var app = builder.Build();
通过构造函数注入 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 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);
}
}
例如使用 GetOrCreate:
var forecast = _cache.GetOrCreate(cacheKey, entry =>
{
entry.SetAbsoluteExpiration(TimeSpan.FromMinutes(30));
return GenerateWeatherData();
});
合理设置过期时间对缓存有效性至关重要:
MemoryCache 会在内存压力大时自动清理部分条目,因此不能依赖其长期保存数据。
基本上就这些。只要注册服务并注入接口,就能快速为应用加上本地缓存能力,显著提升响应速度。关键是根据业务选择合适的缓存键和过期策略,避免脏数据或内存溢出。
# redis
# windows
# app
# win
# microsoft
# 热点
# 数据丢失
# .net
# red
# 2025
# 分布式
# 命名空间
# 构造函数
# 接口
# 数据库
# 仅限
# 重启
# 应用程序
# 是一个
# 就能
# 找不到
# 还会
# 适用于
# 会在
相关文章:
如何选择适配移动端的WAP自助建站平台?
如何高效搭建专业期货交易平台网站?
专业商城网站制作公司有哪些,pi商城官网是哪个?
深入理解Android中的xmlns:tools属性
建站之星后台密码遗忘?如何快速找回?
如何用花生壳三步快速搭建专属网站?
香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧
制作国外网站的软件,国外有哪些比较优质的网站推荐?
建站主机系统SEO优化与智能配置核心关键词操作指南
如何快速使用云服务器搭建个人网站?
建站10G流量真的够用吗?如何应对访问高峰?
免费制作小说封面的网站有哪些,怎么接网站批量的封面单?
如何彻底卸载建站之星软件?
微信h5制作网站有哪些,免费微信H5页面制作工具?
建站之星展会模板:智能建站与自助搭建高效解决方案
h5在线制作网站电脑版下载,h5网页制作软件?
深圳 网站制作,深圳招聘网站哪个比较好一点啊?
娃派WAP自助建站:免费模板+移动优化,快速打造专业网站
建站主机是什么?如何选择适合的建站主机?
制作网站的过程怎么写,用凡科建站如何制作自己的网站?
建站之星代理如何优化在线客服效率?
广州商城建站系统开发成本与周期如何控制?
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?
建站之星安装步骤有哪些常见问题?
文字头像制作网站推荐软件,醒图能自动配文字吗?
javascript基本数据类型及类型检测常用方法小结
制作充值网站的软件,做人力招聘为什么要自己交端口钱?
香港服务器部署网站为何提示未备案?
如何在云虚拟主机上快速搭建个人网站?
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
如何通过VPS建站实现广告与增值服务盈利?
5种Android数据存储方式汇总
建站之星如何助力网站排名飙升?揭秘高效技巧
头像制作网站在线制作软件,dw网页背景图像怎么设置?
唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?
寿县云建站:智能SEO优化与多行业模板快速上线指南
php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】
如何通过虚拟主机快速搭建个人网站?
如何通过IIS搭建网站并配置访问权限?
建站主机选购指南与交易推荐:核心配置解析
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
在线教育网站制作平台,山西立德教育官网?
佛山企业网站制作公司有哪些,沟通100网上服务官网?
做企业网站制作流程,企业网站制作基本流程有哪些?
如何在建站主机中优化服务器配置?
宝华建站服务条款解析:五站合一功能与SEO优化设置指南
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
网站制作多少钱一个,建一个论坛网站大约需要多少钱?
设计网站制作公司有哪些,制作网页教程?
网站app免费制作软件,能免费看各大网站视频的手机app?
*请认真填写需求信息,我们会在24小时内与您取得联系。