缓存管理的帮助类(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博客园博客,原文链接:http://www.cnblogs.com/jinzhao/archive/2012/06/11/2545450.html,如需转载请自行联系原作者

相关文章
|
9月前
|
存储 缓存
.NET 6中Startup.cs文件注入本地缓存策略与服务生命周期管理实践:AddTransient, AddScoped, AddSingleton。
记住,选择正确的服务生命周期并妥善管理它们是至关重要的,因为它们直接影响你的应用程序的性能和行为。就像一个成功的建筑工地,工具箱如果整理得当,工具选择和使用得当,工地的整体效率将会大大提高。
330 0
|
SQL 缓存 开发框架
分享一个 .NET EF6 应用二级缓存提高性能的方法
分享一个 .NET EF6 应用二级缓存提高性能的方法
220 0
|
开发框架 .NET 中间件
七天.NET 8操作SQLite入门到实战 - (2)第七天Blazor班级管理页面编写和接口对接
七天.NET 8操作SQLite入门到实战 - (2)第七天Blazor班级管理页面编写和接口对接
421 7
|
缓存 NoSQL Java
【Azure Redis 缓存 Azure Cache For Redis】Redis出现 java.net.SocketTimeoutException: Read timed out 异常
【Azure Redis 缓存 Azure Cache For Redis】Redis出现 java.net.SocketTimeoutException: Read timed out 异常
277 5
|
缓存 NoSQL 网络协议
【Azure Redis 缓存】Redisson 连接 Azure Redis出现间歇性 java.net.UnknownHostException 异常
【Azure Redis 缓存】Redisson 连接 Azure Redis出现间歇性 java.net.UnknownHostException 异常
612 1
|
缓存 程序员
封装一个给 .NET Framework 用的内存缓存帮助类
封装一个给 .NET Framework 用的内存缓存帮助类
213 1
|
缓存 开发框架 .NET
看看 Asp.net core Webapi 项目如何优雅地使用内存缓存
看看 Asp.net core Webapi 项目如何优雅地使用内存缓存
330 1
|
存储 缓存 Java
探秘MyBatis缓存原理:Cache接口与实现类源码分析
探秘MyBatis缓存原理:Cache接口与实现类源码分析
314 2
探秘MyBatis缓存原理:Cache接口与实现类源码分析
|
存储 缓存 开发框架
看看 Asp.net core Webapi 项目如何优雅地使用分布式缓存
看看 Asp.net core Webapi 项目如何优雅地使用分布式缓存
285 0
.Net Core 中 MemoryCache 使用
.Net Core 中 MemoryCache 使用
519 0