1.CacheHelper

public class CacheHelper
{
public static ObjectCache Cache
{
get
{
return MemoryCache.Default;
}
} public static bool TryGetCache<T>(string key, ref T value)
{
object v = null;
//Type t = typeof(T);
bool hit;
hit = TryGetCacheObject(key, ref v);
if (hit)
value = (T)v;
return hit;
} //public static bool TryGetCache(string key, ref bool value)
//{
// return TryGetCacheStruct(key, ref value);
//} //public static bool TryGetCache(string key, ref int value)
//{
// return TryGetCacheStruct(key, ref value);
//} public static bool TryGetCacheStruct<T>(string key, ref T value) where T : struct
{
object v = null;
bool hit = TryGetCacheObject(key, ref v);
if (hit)
value = (T)v;
return hit;
} public static bool TryGetCacheObject(string key, ref object value)
{
object v = Cache.Get(key);
bool hit = false;
if (v == null)
hit = false;
else if (v == DBNull.Value)
{
hit = true;
value = null;
}
else
{
hit = true;
value = v;
}
//TraceHelper.Trace("Cache", string.Format("TryGetCache({0}) = {1}", key, hit));
return hit;
} public static bool ContainsCache(string key)
{
bool hit = Cache.Contains(key);
//TraceHelper.Trace("Cache", string.Format("ContainsCache({0}) = {1}", key, hit));
return hit;
} public static object GetCache(string key)
{
object v = Cache.Get(key);
if (v == DBNull.Value)
{
return null;
}
//TraceHelper.Trace("Cache", string.Format("GetCache({0}) = {1}", key, v == null ? "null" : v.ToString()));
return v;
} public static void SetCache(string key, object value)
{
SetCache(key, value, CacheItemPolicy);
} public static void SetCache(string key, object value, CacheItemPolicy policy)
{
object v = value;
if (value == null)
v = DBNull.Value;
Cache.Set(key, v, policy);
//TraceHelper.Trace("Cache", string.Format("SetCache({0}) = {1}", key, value == null ? "null" : value.ToString()));
} public static CacheItemPolicy CacheItemPolicy
{
get
{ CacheItemPolicy policy = new CacheItemPolicy();
policy.SlidingExpiration = new TimeSpan(0, AppConfiguration.CacheSlidingExpirationInMins, 0);
return policy;
}
} public static CacheItemPolicy AbsoluteCacheItemPolicy
{
get
{
CacheItemPolicy policy = new CacheItemPolicy();
policy.AbsoluteExpiration = DateTime.Now + TimeSpan.FromMinutes(AppConfiguration.CacheAbsoluteExpirationInMins);
return policy;
}
} public static void ClearCacheByPrefix(string prefix)
{
List<string> keys = new List<string>();
foreach (var c in Cache)
{
if (c.Key.StartsWith(prefix))
{
keys.Add(c.Key);
}
}
int count = keys.Count;
foreach (var key in keys)
{
Cache.Remove(key);
}
//TraceHelper.Trace("Cache", string.Format("ClearCacheByPrefix({0}) = {1}", prefix, count));
}
}
    public class TestKey
{
public string Code { get; set; }
public decimal CodeNo { get; set; } public override bool Equals(object obj)
{
TestKey v = obj as TestKey;
if (v == null) return false; return v.Code== this.Code && v.CodeNo== this.CodeNo;
} public override int GetHashCode()
{
int primeNo = 31;
return (this.Code.GetHashCode() * primeNo + this.CodeNo.GetHashCode();
}
}
        public static HashSet<StopPaymentKey> GetAllFromCache()
{
string cachekey = "AllTestKeys";
HashSet<TestKey> set = null;
if (!CacheHelper.TryGetCache(cachekey, ref set))
{
set= GetAllTestKeys();
CacheItemPolicy policy = CacheHelper.AbsoluteCacheItemPolicy;
//policy.RemovedCallback = (arg) =>
//{
// var newSet = GetAllTestCodes();
// CacheHelper.SetCache(cachekey, newSet, policy);
//};
CacheHelper.SetCache(cachekey, stoppaymentSet, policy);
}
return set;
}

最新文章

  1. ASP.NET Linux部署(2) - MS Owin + WebApi + Mono + Jexus
  2. Entity Framework 教程——模型浏览器
  3. 【2016-11-11】【坚持学习】【Day24】【WPF 自定义控件 附加属性 自定义事件】
  4. 了解了下 Google 最新的 Fuchsia OS
  5. 【DP】HDU 1114
  6. C语言学习006:歌曲搜索
  7. jQuery常用方法验证
  8. maven 创建Hadoop程序
  9. elixir 高可用系列 - 目录
  10. ready和onload
  11. ZeroMQ 在 centos 6.5_x86_64 下的安装
  12. jqGrid Tree
  13. webService 接口调用配置
  14. express cookie-session解惑
  15. 原生app,WEBAPP,混合app
  16. 双系统删除Ubuntu后出现grub界面而无法正常启动Windows系统的解决方法
  17. JavaEE中的MVC(一)Dao层彻底封装
  18. apache kafka &amp; CDH kafka源码编译
  19. java篇 之 流程控制语句
  20. 关于 /bin/bash: warning: setlocale: LC_ALL: cannot change locale (en.US_UTF-8) 问题

热门文章

  1. 最佳thread数量
  2. MySQL中的case when 中对于NULL值判断的坑
  3. go语言的3个包——strconv、os.Args、flag
  4. Scratch编程:初识Scratch及编程工具安装(一)
  5. 织梦安全防护:禁止uploads、data、templets执行脚本
  6. 我们为什么要通过python来入IT这一行
  7. 《阿里巴巴 Java 开发规约》自动化检测插件安装及体验
  8. EntityFramework进阶(四)- 实现批量新增
  9. 一行命令开启VNC 和windows之间复制粘贴功能
  10. 【fiddler】fiddler基础