using AUTS.Services.Enums; using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Web; using System.Web.Mvc; namespace AUTS.Services.Extensions { /// /// 缓存扩展 /// public static class CacheExtensions { public static MvcHtmlString Cache(this HtmlHelper htmlHelper, string cacheName, Func func, CacheTimeType cacheTimeType, int cacheTime) { if (!CacheExtensions.CheckCache(cacheName)) { CacheExtensions.SetCache(cacheName, func().ToString(), cacheTimeType, cacheTime); } return MvcHtmlString.Create(CacheExtensions.GetCache(cacheName)); } /// /// 检查缓存名是否存在,如果存在则返回True /// /// 缓存的枚举类 public static bool CheckCache(string cacheName) { return HttpRuntime.Cache[cacheName.ToString()] != null; } /// /// 获取缓存,未做校验,每次取缓存的时候需要判断缓存是否存在 /// /// /// /// /// public static T GetCache(string cacheName) { return (T)((object)HttpRuntime.Cache[cacheName]); } public static T GetCacheWithSet(string cacheName, Func valueFunc, CacheTimeType cacheTimeType, int times) { if (!CacheExtensions.CheckCache(cacheName)) { CacheExtensions.SetCache(cacheName, valueFunc(), cacheTimeType, times); } return CacheExtensions.GetCache(cacheName); } public static T GetCacheWithSet(string cacheName, Func valueFunc) { if (!CacheExtensions.CheckCache(cacheName)) { CacheExtensions.SetCache(cacheName, valueFunc()); } return CacheExtensions.GetCache(cacheName); } /// /// 获取缓存集合,未做校验,每次取缓存的时候需要判断缓存是否存在 /// /// /// /// /// public static List GetCacheList(string cacheName) { return (List)HttpRuntime.Cache[cacheName]; } /// /// 设置缓存 /// /// /// /// /// public static void SetCache(string cacheName, object value, CacheTimeType cacheTimeType, int cacheTime) { switch (cacheTimeType) { case CacheTimeType.ByMinutes: HttpRuntime.Cache.Insert(cacheName, value, null, DateTime.Now.AddMinutes((double)cacheTime), TimeSpan.Zero); return; case CacheTimeType.ByHours: HttpRuntime.Cache.Insert(cacheName, value, null, DateTime.Now.AddHours((double)cacheTime), TimeSpan.Zero); return; case CacheTimeType.ByDays: HttpRuntime.Cache.Insert(cacheName, value, null, DateTime.Now.AddDays((double)cacheTime), TimeSpan.Zero); return; case CacheTimeType.ByYears: HttpRuntime.Cache.Insert(cacheName, value, null, DateTime.Now.AddYears(cacheTime), TimeSpan.Zero); return; default: return; } } public static void SetCache(string cacheName, object value) { HttpRuntime.Cache.Insert(cacheName, value); } public static List GetAllCache() { List list = new List(); IDictionaryEnumerator enumerator = HttpRuntime.Cache.GetEnumerator(); while (enumerator.MoveNext()) { list.Add(enumerator.Key.ToString()); } return list; } /// /// 清除指定缓存 /// /// public static void ClearCache(string cacheName) { if (CacheExtensions.CheckCache(cacheName)) { HttpRuntime.Cache.Remove(cacheName); } } /// /// 重置缓存 /// /// /// public static void RestCache(string cacheName, object value) { if (CacheExtensions.CheckCache(cacheName)) { HttpRuntime.Cache[cacheName] = value; return; } CacheExtensions.SetCache(cacheName, value); } } }