基础缓存操作类

  1 /// <summary>
  2 /// HttpRuntime Cache读取设置缓存信息封装
  3 /// 使用描述:给缓存赋值使用HttpRuntimeCache.Set(key,value....)等参数(第三个参数可以传递文件的路径(HttpContext.Current.Server.MapPath()))
  4 /// 读取缓存中的值使用JObject jObject=HttpRuntimeCache.Get(key) as JObject,读取到值之后就可以进行一系列判断
  5 /// </summary>
  6 public class CacheExtend
  7 {
  8 /// <summary>
  9 /// 设置缓存时间,配置(从配置文件中读取)
 10 /// </summary>
 11 private const double Seconds = 30*24*60*60;
 12 
 13 /// <summary>
 14 /// 缓存指定对象,设置缓存
 15 /// </summary>
 16 public static bool Set(string key, object value)
 17 {
 18 return Set(key, value, null, DateTime.Now.AddSeconds(Seconds), Cache.NoSlidingExpiration,
 19 CacheItemPriority.Default, null);
 20 }
 21 
 22 /// <summary>
 23 /// 缓存指定对象,设置缓存
 24 /// </summary>
 25 public static bool Set(string key, object value, string path)
 26 {
 27 try
 28 {
 29 var cacheDependency = new CacheDependency(path);
 30 return Set(key, value, cacheDependency);
 31 }
 32 catch
 33 {
 34 return false;
 35 }
 36 }
 37 
 38 /// <summary>
 39 /// 缓存指定对象,设置缓存
 40 /// </summary>
 41 public static bool Set(string key, object value, CacheDependency cacheDependency)
 42 {
 43 return Set(key, value, cacheDependency, Cache.NoAbsoluteExpiration, Cache.NoSlidingExpiration,
 44 CacheItemPriority.Default, null);
 45 }
 46 
 47 /// <summary>
 48 /// 缓存指定对象,设置缓存
 49 /// </summary>
 50 public static bool Set(string key, object value, double seconds, bool isAbsulute)
 51 {
 52 return Set(key, value, null, (isAbsulute ? DateTime.Now.AddSeconds(seconds) : Cache.NoAbsoluteExpiration),
 53 (isAbsulute ? Cache.NoSlidingExpiration : TimeSpan.FromSeconds(seconds)), CacheItemPriority.Default,
 54 null);
 55 }
 56 
 57 /// <summary>
 58 /// 获取缓存对象
 59 /// </summary>
 60 public static object Get(string key)
 61 {
 62 return GetPrivate(key);
 63 }
 64 
 65 /// <summary>
 66 /// 判断缓存中是否含有缓存该键
 67 /// </summary>
 68 public static bool Exists(string key)
 69 {
 70 return (GetPrivate(key) != null);
 71 }
 72 
 73 /// <summary>
 74 /// 移除缓存对象
 75 /// </summary>
 76 /// <param name="key"></param>
 77 /// <returns></returns>
 78 public static bool Remove(string key)
 79 {
 80 if (string.IsNullOrEmpty(key))
 81 {
 82 return false;
 83 }
 84 HttpRuntime.Cache.Remove(key);
 85 return true;
 86 }
 87 
 88 /// <summary>
 89 /// 移除所有缓存
 90 /// </summary>
 91 /// <returns></returns>
 92 public static bool RemoveAll()
 93 {
 94 IDictionaryEnumerator iDictionaryEnumerator = HttpRuntime.Cache.GetEnumerator();
 95 while (iDictionaryEnumerator.MoveNext())
 96 {
 97 HttpRuntime.Cache.Remove(Convert.ToString(iDictionaryEnumerator.Key));
 98 }
 99 return true;
100 }
101 
102 
103 /// <summary>
104 /// 尝试获取缓存,不存在则执行匿名委托
105 /// </summary>
106 /// <typeparam name="T"></typeparam>
107 /// <param name="key"></param>
108 /// <param name="func"></param>
109 /// <returns></returns>
110 public static T TryGet<T>(string key, Func<T> func)
111 {
112 if (Exists(key)) return (T) Get(key);
113 var result = func.Invoke();
114 Set(key, result);
115 return result;
116 }
117 
118  
119 
120 //------------------------提供给上面方法进行调用-----------------------------------
121 /// <summary>
122 /// 设置缓存
123 /// </summary>
124 public static bool Set(string key, object value, CacheDependency cacheDependency, DateTime dateTime,
125 TimeSpan timeSpan, CacheItemPriority cacheItemPriority, CacheItemRemovedCallback cacheItemRemovedCallback)
126 {
127 if (string.IsNullOrEmpty(key) || value == null)
128 {
129 return false;
130 }
131 HttpRuntime.Cache.Insert(key, value, cacheDependency, dateTime, timeSpan, cacheItemPriority,
132 cacheItemRemovedCallback);
133 return true;
134 }
135 
136 /// <summary>
137 /// 获取缓存
138 /// </summary>
139 private static object GetPrivate(string key)
140 {
141 return string.IsNullOrEmpty(key) ? null : HttpRuntime.Cache.Get(key);
142 }
143 }

 

posted @ 2017-01-20 10:12  小小的菜鸟程序员  阅读(192)  评论(0编辑  收藏  举报