.net一般缓存帮助类

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Runtime.Caching;
  5 using System.Text;
  6 
  7 namespace Components.Helper
  8 {
  9 /// <summary>
 10 /// 一般缓存类
 11 /// </summary>
 12 public class CacheHelper
 13 {
 14 static CacheItemPolicy cacheItemPolicy = new CacheItemPolicy()
 15 {
 16 RemovedCallback = new CacheEntryRemovedCallback(CacheEntryRemoved),
 17 SlidingExpiration = new TimeSpan(0, 20, 0)
 18 };
 19 
 20 static void CacheEntryRemoved(CacheEntryRemovedArguments arg)
 21 {
 22 //Entities<T> db = new Entities<T>();
 23 //var list = db.ESet.ToList();
 24 // Cache<T>.AddCache(list);
 25 }
 26 
 27 
 28 /// <summary>新增缓存</summary>
 29 /// <param name="key">缓存Key</param>
 30 /// <param name="data">缓存数据</param>
 31 public static void AddCache(string key, object data)
 32 {
 33 if (MemoryCache.Default.Contains(key))
 34 {
 35 MemoryCache.Default.Remove(key);
 36 }
 37 MemoryCache.Default.Add(key, data, cacheItemPolicy);
 38 
 39 }
 40 
 41  
 42 
 43 /// <summary>
 44 /// 新增缓存
 45 /// </summary>
 46 /// <param name="key">缓存的唯一标识key</param>
 47 /// <param name="data">缓存的数据</param>
 48 /// <param name="outMinutes">过期时间(分钟)</param>
 49 public static void AddCache(string key, object data, int outMinutes)
 50 {
 51 
 52 if (MemoryCache.Default.Contains(key))
 53 {
 54 MemoryCache.Default.Remove(key);
 55 }
 56 CacheItemPolicy _cacheItemPolicy = new CacheItemPolicy()
 57 {
 58 RemovedCallback = new CacheEntryRemovedCallback(CacheEntryRemoved),
 59 SlidingExpiration = new TimeSpan(0, outMinutes, 0)
 60 };
 61 MemoryCache.Default.Add(key, data, _cacheItemPolicy);
 62 
 63 }
 64 
 65 /// <summary>
 66 /// 根据key获取单个缓存
 67 /// </summary>
 68 /// <param name="key"></param>
 69 /// <returns></returns>
 70 public static object GetCache(string key)
 71 {
 72 
 73 if (MemoryCache.Default.Contains(key))
 74 {
 75 return (object)MemoryCache.Default[key];
 76 }
 77 return null;
 78 
 79 
 80 }
 81 
 82 
 83 /// <summary>移除缓存</summary>
 84 /// <param name="key">缓存Key</param>
 85 public static void RemoveCache(string key)
 86 {
 87 if (MemoryCache.Default.Contains(key))
 88 {
 89 MemoryCache.Default.Remove(key);
 90 }
 91 }
 92 
 93 /// <summary>
 94 /// 移除缓存,针对空间
 95 /// </summary>
 96 /// <param name="regionName"></param>
 97 public static void RemoveRegionCache(string regionName)
 98 {
 99 var cacheList = MemoryCache.Default.Where(q => q.Key.StartsWith(regionName + ":")).ToList();
100 foreach (var item in cacheList)
101 {
102 MemoryCache.Default.Remove(item.Key);
103 }
104 }
105 
106 /// <summary>
107 /// 新增分布式缓存
108 /// </summary>
109 /// <param name="key">缓存Key</param>
110 /// <param name="data">缓存数据</param>
111 /// <param name="p_IsOutDate">是否过期 默认过期事件20分钟 webconfig中配置</param>
112 public static void AddMemcachedCache(string key, object data, bool p_IsOutDate)
113 {
114 if (MemcachHelper.IsEnableScatteredCache)
115 {
116 if (MemcachHelper.KeyExists(key))
117 {
118 MemcachHelper.Delete(key);
119 }
120 if (p_IsOutDate)
121 {
122 //初始化过期时间
123 DateTime m_expiryTime = DateTime.Now.AddMilliseconds(MemcachHelper.DefaultCacheTime);
124 MemcachHelper.Add(key, data, m_expiryTime);
125 }
126 else
127 {
128 MemcachHelper.Add(key, data);
129 }
130 }
131 }
132 
133 /// <summary>
134 /// 根据key获取单个分布式缓存
135 /// </summary>
136 /// <param name="key"></param>
137 /// <returns></returns>
138 public static object GetMemcachedCache(string key)
139 {
140 if (MemcachHelper.IsEnableScatteredCache)
141 {
142 if (MemcachHelper.KeyExists(key))
143 {
144 return MemcachHelper.Get(key);
145 }
146 }
147 return null;
148 }
149 
150 /// <summary>
151 /// 根据key删除单个分布式缓存
152 /// </summary>
153 /// <param name="key"></param>
154 /// <returns></returns>
155 public static void RemoveMemcachedCache(string key)
156 {
157 if (MemcachHelper.IsEnableScatteredCache)
158 {
159 if (MemcachHelper.KeyExists(key))
160 {
161 MemcachHelper.Delete(key);
162 }
163 }
164 }
165 }
166 }
原文地址:https://www.cnblogs.com/HuberyHu/p/5318739.html