新闻中心
C# 怎么使用 MemoryCache 实现内存缓存_C# MemoryCache 内存缓存使用指南
MemoryCache是.NET中轻量级内存缓存,支持线程安全操作,通过Set/Get方法添加读取数据,可设置绝对或滑动过期策略,支持复杂对象缓存与移除回调,适用于本地应用性能优化。

在 C# 中,MemoryCache 是 .NET Framework 4.0 引入的一个轻量级内存缓存类,位于 System.Runtime.Caching 命名空间中,适用于桌面应用、Windows 服务或 ASP.NET 应用中的本地数据缓存。相比第三方缓存工具,MemoryCache 使用简单、无需依赖外部服务,适合存储临时数据以提升性能。
引入命名空间并创建 MemoryCache 实例
使用 MemoryCache 前需添加对 System.Runtime.Caching 的引用(.NET Framework 项目默认包含,.NET Core/.NET 5+ 需安装 NuGet 包 Microsoft.Extensions.Caching.Memory)。
在 .NET Framework 中:
using System.Runtime.Caching;
获取默认的缓存实例:
var cache = MemoryCache.Default;
也可创建自定义实例(推荐用于更灵活控制):
var cache = new MemoryCache("MyCache");添加和读取缓存项
通过 Set 方法添加数据,Get 方法读取数据。
示例:缓存一个字符串
cache.Set("username", "zhangsan", DateTimeOffset.Now.AddMinutes(10));读取缓存:
Yaara
使用AI生成一流的文案广告,电子邮件,网站,列表,博客,故事和更多…
95
查看详情
var value = cache.Get("username") as string;
if (value != null)
{
Console.WriteLine("缓存命中: " + value);
}
else
{
Console.WriteLine("缓存未命中");
}支持设置缓存过期策略,如绝对过期时间(如上例)或滑动过期(访问后自动延长):
var policy = new CacheItemPolicy
{
SlidingExpiration = TimeSpan.FromMinutes(5) // 5分钟内访问则延长
};
cache.Set("data", dataList, policy);缓存复杂对象与移除机制
MemoryCache 可缓存任意对象类型,例如 List、自定义类等。
var users = GetUsersFromDatabase();
cache.Set("users", users, DateTimeOffset.Now.AddMinutes(20));可手动移除缓存项:
cache.Remove("users");也可在添加时注册回调,在缓存项被移除时执行操作:
void OnCacheRemoved(CacheEntryRemovedArguments arguments)
{
Console.WriteLine($"缓存 {arguments.CacheItem.Key} 已被移除,原因: {arguments.RemovedReason}");
}
<p>var policy = new CacheItemPolicy
{
AbsoluteExpiration = DateTimeOffset.Now.AddMinutes(10),
RemovedCallback = OnCacheRemoved
};
cache.Set("tempData", "test", policy);线程安全与性能建议
MemoryCache 本身是线程安全的,多个线程可同时读写,无需额外加锁。
使用建议:
- 避免缓存大量数据,防止内存溢出
- 合理设置过期时间,防止数据陈旧
- 频繁使用的缓存键建议封装为常量
- 在 ASP.NET 中,优先使用 IMemoryCache(来自 Microsoft.Extensions.Caching.Memory),更适合 Web 场景
基本上就这些。MemoryCache 简单高效,适合本地缓存场景,掌握 Set、Get、过期策略和回调机制就能满足大多数需求。
以上就是C# 怎么使用 MemoryCache 实现内存缓存_C# MemoryCache 内存缓存使用指南的详细内容,更多请关注其它相关文章!
# 开源
# 桂林响应式网站建设对比
# 赣榆seo短视频
# 佛山谷歌seo推广官网
# 鹤壁新区文明网站建设
# 海阳信息推广网站
# 济南网站推广单位电话
# 网站建设实训方案范文
# 河北微信营销推广方案
# 白杨seo博客
# 迪庆州网站推广托管
# 意味着什么
# 如何选择
# windows
# 有什么区别
# 自定义
# 这对
# 微软
# 适用于
# 回调
# 移除
# .net
# c#
# microsoft
# win
# 工具
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
处理动态列数据:J*a ArrayList的正确初始化与字符累加教程
J*a里如何使用N*igableMap进行导航操作_可导航Map操作技巧解析
零跑汽车11月交付量达70327台 实现连续9个月正增长
Python:递归比较文件夹内容并找出特定类型文件的差异
Python多线程中正确使用sigwait处理SIGALRM信号
“音游” × “怪文书” 题材的节奏冒险游戏 《晕晕电波症候群》确定于2026年4月发售!
探索高级语言到原生C/C++的转译:挑战与内存管理策略
抖音小游戏合成大西瓜免费秒玩入口链接 抖音小游戏热门合集秒玩网站
在Go开发中优雅管理ListenAndServe进程:GoSublime集成方案
漫蛙manwa官网登录界面_漫蛙漫画网页版主站入口
微信网页版扫码登录入口 微信网页版二维码登录入口
高德地图沿途添加点失败如何解决 高德多点规划方法
Python自定义类排序:解决lambda键值访问TypeError的实践指南
支付宝解绑银行卡步骤_支付宝如何解除绑定银行卡
蛙漫漫画官网在线入口 蛙漫全本漫画免费阅读平台
HTML元素状态管理:根据DIV内容动态启用/禁用按钮
一加Ace 6T支持全新明眸护眼:通过了最严苛的护眼小金标认证
怎样更改Windows系统的默认安装路径_避免C盘爆满的终极设置【技巧】
sublime侧边栏怎么增强功能_SideBarEnhancements for sublime安装与配置
AI泡沫首次被“刺破”:GPU十年都无法存活!
C++如何实现异步操作_C++11使用std::future和std::async进行异步编程
Win11怎么修改默认浏览器_Windows 11设置Chrome为默认
外媒分析《GTA6》定价:卖100美元可以但真没必要!
汽水音乐在线解析 汽水音乐在线解析入口
C++ explicit关键字防止隐式转换_C++构造函数安全规范
提升Kafka消费者健壮性:会话超时处理与消息处理语义
怎样使用“本地安全策略”提升Windows安全性_Secpol.msc配置指南【高手】
天猫双十一预售商品怎么退款_天猫双十一预售退款操作指南
如何使用Node.js csv 包按条件移除含空字段的CSV记录
解决Bootstrap卡片顶部边距导致背景图下移的问题
实现全屏滚动与导航点:专业教程
J*aScript map 方法中处理循环元素为空数组的策略
初次安装JDK时环境变量如何正确配置_J*A_HOME与PATH设置规则讲解
J*a编写用户注册与登录功能_掌握字符串与验证逻辑
C#如何安全地从用户上传的XML文件中读取数据? 验证与清理策略
Fabric模组开发:自定义物品与物品组的现代管理方法
J*aScript中向JSON对象添加新属性的正确姿势
Safari怎么安装扩展程序 浏览器插件安装与管理方法【详解】
理解Python模块与全局变量的作用域管理
正确连接J*aScript到HTML实现可点击图片与自定义事件处理
windows10怎么查看本机ip_windows10命令提示符ipconfig使用
ExcelARRAYTOTEXT函数怎么自定义分隔符输出数组文本_ARRAYTOTEXT实现动态生成SQL语句
QQ邮箱稳定登录入口_QQ邮箱官方网站网页版使用
ArchiveofOurOwn小说阅读-ArchiveofOurOwn同人作品访问链接
J*aScript中localStorage数据的获取、清洗与格式化教程
windows10怎么查看硬盘序列号_windows10硬盘id查询命令
夸克浏览器桌面版同步不了书签怎么处理 夸克浏览器跨设备同步异常解决方案
PyTorch模型训练效果不佳?深入剖析常见错误与调试技巧
蛙漫画网页版全站入口 蛙漫热门作品免费浏览
Yandex搜索引擎一键访问入口_俄罗斯Yandex官网免登录


2025-11-09
浏览次数:次
返回列表