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;
}
}
}