Asp.net Core CacheHelper 通用缓存帮助类
#特别说明
启用内存缓存,需要在Start.cs 中开启:
//添加内存缓存 builder.Services.AddMemoryCache();
注:本文转载
public class CacheHelper { public static IMemoryCache _memoryCache = new MemoryCache(new MemoryCacheOptions()); /// <summary> /// 缓存绝对过期时间 /// </summary> ///<param name="key">Cache键值</param> ///<param name="value">给Cache[key]赋的值</param> ///<param name="minute">minute分钟后绝对过期</param> public static void CacheInsertAddMinutes(string key, object value, int minute) { if (value == null) return; _memoryCache.Set(key, value, new MemoryCacheEntryOptions() .SetAbsoluteExpiration(TimeSpan.FromMinutes(minute))); } /// <summary> /// 缓存相对过期,最后一次访问后minute分钟后过期 /// </summary> ///<param name="key">Cache键值</param> ///<param name="value">给Cache[key]赋的值</param> ///<param name="minute">滑动过期分钟</param> public static void CacheInsertFromMinutes(string key, object value, int minute) { if (value == null) return; _memoryCache.Set(key, value, new MemoryCacheEntryOptions() .SetSlidingExpiration(TimeSpan.FromMinutes(minute))); } /// <summary> ///以key键值,把value赋给Cache[key].如果不主动清空,会一直保存在内存中. /// </summary> ///<param name="key">Cache键值</param> ///<param name="value">给Cache[key]赋的值</param> public static void CacheInsert(string key, object value) { _memoryCache.Set(key, value); } /// <summary> ///清除Cache[key]的值 /// </summary> ///<param name="key"></param> public static void CacheNull(string key) { _memoryCache.Remove(key); } /// <summary> ///根据key值,返回Cache[key]的值 /// </summary> ///<param name="key"></param> public static object CacheValue(string key) { return _memoryCache.Get(key); } #region 缓存文档 //public IActionResult Index() //{ // string cacheKey = "key"; // string result; // if (!_memoryCache.TryGetValue(cacheKey, out result)) // { // result = $"LineZero{DateTime.Now}"; // _memoryCache.Set(cacheKey, result); // //设置相对过期时间2分钟 // _memoryCache.Set(cacheKey, result, new MemoryCacheEntryOptions() // .SetSlidingExpiration(TimeSpan.FromMinutes(2))); // //设置绝对过期时间2分钟 // _memoryCache.Set(cacheKey, result, new MemoryCacheEntryOptions() // .SetAbsoluteExpiration(TimeSpan.FromMinutes(2))); // //移除缓存 // _memoryCache.Remove(cacheKey); // //缓存优先级 (程序压力大时,会根据优先级自动回收) // _memoryCache.Set(cacheKey, result, new MemoryCacheEntryOptions() // .SetPriority(CacheItemPriority.NeverRemove)); // //缓存回调 10秒过期会回调 // _memoryCache.Set(cacheKey, result, new MemoryCacheEntryOptions() // .SetAbsoluteExpiration(TimeSpan.FromSeconds(10)) // .RegisterPostEvictionCallback((key, value, reason, substate) => // { // Console.WriteLine($"键{key}值{value}改变,因为{reason}"); // })); // //缓存回调 根据Token过期 // var cts = new CancellationTokenSource(); // _memoryCache.Set(cacheKey, result, new MemoryCacheEntryOptions() // .AddExpirationToken(new CancellationChangeToken(cts.Token)) // .RegisterPostEvictionCallback((key, value, reason, substate) => // { // Console.WriteLine($"键{key}值{value}改变,因为{reason}"); // })); // cts.Cancel(); // } // ViewBag.Cache = result; // return View(); //} #endregion }
更多:
分类:
Asp.Net Core
标签:
Asp.net Core Cache
, 通用缓存帮助类
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
2014-07-02 使用区域组织 ASP.NET MVC 应用程序