Cache的使用

news/2024/7/9 1:43:59

1.Cache与Session的区别
每个用户都有自己单独的Session对象
但是放在Cache中的数据是大家共享的

protected void SetCache()
{
//判断缓存是否为空
if (Cache["UserInfo"] == null)
{
Bll.UserInfoBll userInfobll = new Bll.UserInfoBll();

//如果为空了,需要重新查询数据
List<UserInfo> list = userInfobll.GetUserInfo();

//将经常查询,但不是经常改动的数据放在缓存当中
//将数据放到缓存中
//第一种方法
//Cache["UserInfo"] = list; 一般采用这个方法(如果数据修改了,后台添加数据时,提交表单时,可以直接移除Cache,这样不依赖于缓存依赖项)
//第二种方法(使用下面的重载)
//public void Insert(string key, object value, CacheDependency dependencies, DateTime absoluteExpiration, TimeSpan slidingExpiration, CacheItemPriority priority, CacheItemRemovedCallback onRemoveCallback);
//1.键
//2.值
//3.CacheDependency dependencies (监视数据库表的数据是否改动,如果改动会给缓存发送一个消息) 缓存依赖项
//4.DateTime absoluteExpiration 缓存的过期时间 绝对过期时间 比如 1天
//5.TimeSpan slidingExpiration 时间差(DateTime-DateTime = TimeSpan(结果的类型是TimeSpan类型))
//6.CacheItemPriority priority 缓存的优先级
//7.CacheItemRemovedCallback onRemoveCallback 缓存移除的原因(委托)
Cache.Insert("UserInfo", list, null, DateTime.Now.AddSeconds(20), TimeSpan.Zero, System.Web.Caching.CacheItemPriority.Normal, RemoveCache);
//强制移除 Cache
//Cache.Remove(UserInfo);

}
else
{
List<UserInfo> list = (List<UserInfo>)Cache["UserInfo"];
}
}

 

/// <summary>
/// 缓存移除原因
/// </summary>
/// <param name="key"></param>
/// <param name="value"></param>
/// <param name="reason"></param>
protected void RemoveCache(string key, object value, CacheItemRemovedReason reason)
{
//方法的签名和委托保持一致
//1.CacheItemRemovedReason F12可以查看原因
if(reason == CacheItemRemovedReason.Expired)//如果时间到期
{
//缓存移除的原因写入日志中
}
}

转载于:https://www.cnblogs.com/jinjingBlog/p/9792072.html


http://www.niftyadmin.cn/n/3354280.html

相关文章

uC/OS学习笔记2

引 言&#xff1a;1 uC/OS-II的运行机制  在嵌入式系统的应用中&#xff0c;实时性是一个重要的指标&#xff0c;而优先级翻转是影响系统实时性的重要问题。本文着重分析优先级翻转问题的产生和影响&#xff0c;以及在uC/OS-II中的解决方案。  uC/OS-II采用基于固定优先级的…

java小面试题

1、声明式事务和编程式事物的区别&#xff1a; 编程式事务需要你在代码中直接加入处理事务的逻辑,可能需要在代码中显式调用beginTransaction()、commit()、rollback()等事务管理相关的方法,如在执行a方法时候需要事务处理,你需要在a方法开始时候开启事务,处理完后。在方法结束…

将建设中公路项目的滑模施工节奏和要点掌握

产出公路项目路平石模具的主要步骤目前大多数依赖于施工机械设备&#xff0c;对于建设中的节奏和管理是相互促进的&#xff0c;准确的将建设工作落实是重点&#xff0c;施工的要点落实的要切实有效才行&#xff0c;整体的节奏在于进度的跟进&#xff0c;以及对于建设方面重点工…

施工机械在路平石模具建设方面的质量控制标准

对于质量的控制方面的建设工作&#xff0c;在公路施工中建设方面采用机械设备来实现&#xff0c;在符合了涉及的要求&#xff0c;在制作的过程中和交付的环节进行检查&#xff0c;记录一些对于通用要求有帮助的环节&#xff0c;来实现项目建设的突破和发展。 对于建设路缘石等品…

uC/OS学习比较3

OSTimeDly 在Task中&#xff0c;一般执行一段时间之后调用OSTimeDly推迟一段时间再继续运行&#xff0c;OSTimeDly将本进程从Ready TCBList中删除&#xff0c;然后将Delay的时间设置给OSTCBDly&#xff0c;最后调用OS_Sched进行进程调度。 void OSTimeDly (INT16U ticks) { INT…

msql小技巧

前言&#xff1a; mysql同样的设置&#xff0c;在不同的环境下 &#xff0c;由于内存&#xff0c;访问量&#xff0c;读写频率&#xff0c;数据差异等等情况&#xff0c;可能会出现不同的结果&#xff0c;因此简单地根据某个给出方案来配置mysql是行不通的&#xff0c;最好能使…

node.js从入门到放弃(二)

上章讲了学习node&#xff0c;应该去学习什么&#xff0c;对这些框架去进行学习现在咋们聊聊如何用原生来进行操作 主要来讲一下events-事件触发器 events是什么东西呢&#xff1f;他的英文翻译&#xff0c;活动&#xff0c;事件的意思&#xff0c;在计算机语言离也是事件的意思…

mysql性能对比

前言&#xff1a; mysql同样的设置&#xff0c;在不同的环境下 &#xff0c;由于内存&#xff0c;访问量&#xff0c;读写频率&#xff0c;数据差异等等情况&#xff0c;可能会出现不同的结果&#xff0c;因此简单地根据某个给出方案来配置mysql是行不通的&#xff0c;最好能使…