using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Security.Cryptography; using System.Collections.Concurrent; using System.Runtime.Caching; using System.Timers; namespace WebSRM.Utility { public class MemoryCacheHelper { /// /// 获取缓存 /// /// /// /// public static string GetCache(string key) { if (MemoryCache.Default == null || MemoryCache.Default[key] == null) { return null; } return MemoryCache.Default[key].ToString(); } /// /// 创建缓存 /// /// /// /// 失效时间范围 /// 失效的绝对时间 /// public static void SetCache(string key, string val, DateTime? absoluteExpiration = null, TimeSpan? slidingExpiration = null ) { try { if (absoluteExpiration == null) { //默认设置为2小时之后 absoluteExpiration = DateTime.Now.AddHours(2); } var policy = CreatePolicy(slidingExpiration, absoluteExpiration); MemoryCache.Default.Set(key, val, policy); } catch (Exception ex) { throw; } } /// /// 清空缓存 /// public static void ClearCache() { List cacheKeys = MemoryCache.Default.Select(kvp => kvp.Key).ToList(); foreach (string cacheKey in cacheKeys) { MemoryCache.Default.Remove(cacheKey); } } private static CacheItemPolicy CreatePolicy(TimeSpan? slidingExpiration, DateTime? absoluteExpiration) { var policy = new CacheItemPolicy(); if (absoluteExpiration.HasValue) { policy.AbsoluteExpiration = absoluteExpiration.Value; } else if (slidingExpiration.HasValue) { policy.SlidingExpiration = slidingExpiration.Value; } policy.Priority = CacheItemPriority.Default; return policy; } } }