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
|
{
|
/// <summary>
|
/// 获取缓存
|
/// </summary>
|
/// <typeparam name="T"></typeparam>
|
/// <param name="key"></param>
|
/// <returns></returns>
|
public static string GetCache(string key)
|
{
|
if (MemoryCache.Default == null || MemoryCache.Default[key] == null)
|
{
|
return null;
|
}
|
return MemoryCache.Default[key].ToString();
|
}
|
|
/// <summary>
|
/// 创建缓存
|
/// </summary>
|
/// <param name="key"></param>
|
/// <param name="val"></param>
|
/// <param name="slidingExpiration">失效时间范围</param>
|
/// <param name="absoluteExpiration">失效的绝对时间</param>
|
/// <returns></returns>
|
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;
|
}
|
}
|
|
|
/// <summary>
|
/// 清空缓存
|
/// </summary>
|
public static void ClearCache()
|
{
|
List<string> 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;
|
}
|
|
}
|
}
|