缓存管理的帮助类(MemoryCache版,.net 4以上支持)
using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Caching; using System.Text; namespace CNBlogs.Zzk.Domain.Entities { public class DictionaryCacheManager<TK, TV> { private ObjectCache memoryCache; public DictionaryCacheManager(): this ( null ){} public DictionaryCacheManager( string name) { memoryCache = new MemoryCache( string .Format( "{0}-{1}-{2}" , typeof (TK).Name, typeof (TV).Name, name)); } public TV Get(TK key,Func<TV> getValue) { if (memoryCache.Contains(key.ToString())) { return (TV)memoryCache[key.ToString()]; } else { var policy = new CacheItemPolicy(); var v = getValue(); object o = v; memoryCache.Set(key.ToString(), o, policy); return v; } } public TV Get(TK key, Func<TV> getValue,DateTimeOffset dateTimeOffset) { if (memoryCache.Contains(key.ToString())) { return (TV)memoryCache[key.ToString()]; } else { var v = getValue(); object o = v; memoryCache.Set(key.ToString(), o, dateTimeOffset); return v; } } public void Clear() { memoryCache.ToList().ForEach(kv => memoryCache.Remove(kv.Key)); } public void Clear(TK key) { memoryCache.Remove(key.ToString()); } } } |
作者:today4king
出处:https://www.cnblogs.com/jinzhao/archive/2012/06/11/2545450.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
分类:
学习笔记
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架