Cashe的使用
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;
}
Cashe的使用的更多相关文章
- HTML中<meta>标签如何正确使用
HTML中<meta>标签如何正确使用 如果我们在浏览器中按下F12或者Ctrl+shift+J,便可以打开开发者工具,在element中即可看到<head>元素中有不少< ...
- 数据存储-CoreData总结
CoreData /*英译 Entity:实体 Attributes:属性 binary:二进制 persistent:持续化 coordinator:协调者 meging:合并 configura ...
- enmo_day_04
数据库名称 : PROD1 update employees set salary = salary + 1000 where LAST_NAME = ‘Bell’; select LAST_NAME ...
- python_way day19 HTML-day5 (form表单验证,CSRF,cookie,session,缓存)
python-way day19 1. dJango的form表单验证 2.CSRF 跨站请求伪造 3.cookie,session 4.缓存 一,django表单验证功能 1.django验证基础: ...
- S3C2440的GPIO编程
一.初步认识S3C2440A [S3C2440A简介] S3C2440A是三星公司推出的基于ARM920t内核的32/16位RISC微处理器.主要用于手持设备和中高端电子产品中.它内部集成16k数据c ...
- PLSQL_性能优化系列20_Oracle Result Cash结果缓存
20150528 Created By BaoXinjian
- SQL日语词汇
データベース 数据库 DATABASE インスタンス (数据库)实例 INSTANCE ユーザー 用戶 USER ログイン・ログアウト ログオン・ログオフ 登录 LOGIN/LOGOUT LOGNO/ ...
- Unity物理优化的一个小问题
为了性能优化,Unity会计算场景中所有的体积,包括静态的碰撞器并把 这些信息存在“Cash”中,对于静止物体而言,有了这些信息,就不需要 再每帧重新进行计算了.若移动,拉伸后或旋转了静态物体时,就是 ...
- Linux下的内核测试工具——perf使用简介
Perf是Linux kernel自带的系统性能优化工具.Perf的优势在于与Linux Kernel的紧密结合,它可以最先应用到加入Kernel的new feature.pef可以用于查看热点函数, ...
随机推荐
- 通过tushare获取股票价格
# Author llll # coding=utf-8 # ---描述# 完成股票 价格查询和展示# 不直接根据网页进行爬虫获取股票价格,而是通过已有组件查询股票价格,并保存到csv文件或者exce ...
- 01 IO流(一)—— 流的概念、File类
1 流的概念理解(重要) 理解流的概念非常重要. 流,就是程序到数据源或目的地的一个通道. 我们把这个通道实例化得到一个具体的流,相当于一个数据传输工具,它可以在程序与资源之间进行数据交换. 换言之, ...
- 02 Python 函数的一些小笔记
函数的返回值 1.使用return可以返回多个值,如:return a,b 返回的数据类型是元组型2.接收返回的元组可以如:c,d=demo() (假设demo()返回a,b元组),需要注意的是,接收 ...
- PAT(B) 1086 就不告诉你(Java)
题目链接:1086 就不告诉你 (15 point(s)) 题目描述 做作业的时候,邻座的小盆友问你:"五乘以七等于多少?"你应该不失礼貌地围笑着告诉他:"五十三.&qu ...
- java使用poi操作word, 支持动态的行(一个占位符插入多条)和表格中动态行, 支持图片
依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifa ...
- 写一个vue的滚动条插件
组件源码如下: vue-scroll.vue <template> <div class="vue-scroll" ref="vueScrollW&qu ...
- Python查看模块
1.查看Python所有内置模块 按以下链接打开,每个模块有介绍,可以选择不同的版本 https://docs.python.org/3.6/library/index.html 2.查看Python ...
- window事件
window事件是较为重要的事件,接下来就讲解一下. 1.获取页面滚动栏的距离 什么是滚动栏,就是网页内容过多时,通过滚轮控制上下显示或者左右显示: 为窗口添加滚动条事件: window.onscro ...
- element-ui DatePicker 日期选择器 让结束日期大于开始日期
element-ui DatePicker 日期选择器 <el-date-picker v-model="addForm.startDate" type="dat ...
- stm32 FSMC-TFTLCD显示
TFTLCD TFT液晶屏常用的通信模式主要有6800模式和8080模式,对于TFT彩屏通常都使用8080并口(简称80并口)模式 8080模式的读写时序其实跟LCD1602或者LCD12864的读写 ...