.NET中的内存缓存(MemoryCache)是什么?如何为应用添加本地缓存?

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

.net中的内存缓存(memorycache)是什么?如何为应用添加本地缓存?

.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.Memory

2. 在 Program.cs 中注册服务

在依赖注入容器中添加 MemoryCache 支持:

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 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)是什么?如何为应用添加本地缓存?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1442367.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 19:00:16
下一篇 2025年12月17日 19:00:24

相关推荐

发表回复

登录后才能评论
关注微信