Cache类缓存
| 属性 | 说明 |
| Count | 获取存储在缓存中的项数。 |
| EffectivePercentagePhysicalMemoryLimit | 获取在 ASP.NET 开始从缓存中移除项之前应用程序可使用的物理内存百分比。 |
| EffectivePrivateBytesLimit | 获取可用于缓存的字节数。 |
| Item | 获取或设置指定键处的缓存项。 |
| 方法名称 | 说明 |
| Add | 将指定项添加到 Cache 对象,该对象具有依赖项、到期和优先级策略以及一个委托(可用于在从 Cache 移除插入项时通知应用程序)。 |
| Get | 从 Cache 对象检索指定项。 |
| GetEnumerator | 检索用于循环访问包含在缓存中的键设置及其值的字典枚举数。 |
| Insert(String, Object) | 向 Cache 对象插入项,该项带有一个缓存键引用其位置,并使用 CacheItemPriority 枚举提供的默认值。 |
| Insert(String, Object, CacheDependency) | 向 Cache 中插入具有文件依赖项或键依赖项的对象。 |
| Insert(String, Object, CacheDependency, DateTime, TimeSpan) | 向 Cache 中插入具有依赖项和到期策略的对象。 |
| Insert(String, Object, CacheDependency, DateTime, TimeSpan, CacheItemUpdateCallback) | 将对象与依赖项、到期策略以及可用于在从缓存中移除项之前通知应用程序的委托一起插入到 Cache 对象中。 |
| Insert(String, Object, CacheDependency, DateTime, TimeSpan, CacheItemPriority, CacheItemRemovedCallback) | 向 Cache 对象中插入对象,后者具有依赖项、到期和优先级策略以及一个委托(可用于在从 Cache 移除插入项时通知应用程序)。 |
| Remove | 从应用程序的 Cache 对象移除指定项。 |
| 名称 | 说明 |
| NoAbsoluteExpiration | 用于 Insert 方法调用中的 absoluteExpiration 参数中以指示项从不到期。 此字段为只读。 |
| NoSlidingExpiration | 用作 Insert 或 Add 方法调用中的 slidingExpiration 参数,以禁用可调到期。 此字段为只读。 |
{
public
partial class _Default : System.Web.UI.Page
{
protected void
Page_Load(object sender, EventArgs e)
{
Person p = new
Person();
p.Id = 1;
p.Name = "诸葛亮";
HttpRuntime.Cache;
cache.Insert("AA",p);
cache.Insert("BB","字符串");
Response.Write(cache.Get("BB").ToString()); //输出 字符串
Person
p2 = cache["AA"] as Person;
Response.Write(p2.Id + " : " +
p2.Name); //输出 1 : 诸葛亮
Response.Write(cache.EffectivePrivateBytesLimit); //-1
这是一个只读属性,那就没什么好说了,只能输出来看看了,但是-1是什么意思呢?无限吗
Response.Write(cache.EffectivePercentagePhysicalMemoryLimit); //98
开始移除项之前可以使用到98%
3
Response.Write(cache["BB"]); //输出 字符串 支持索引器式的读取
//从cache中移除一项
Response.Write("~~~" + cache["BB"] + "~~~");
//移除了输出 null,但程序不报错
{
Response.Write(obj.GetType() + "<br/>");
//输出不知道什么鸟东西
}
}
}
{
public int
Id
{
get;
set;
}
{
get;
set;
}
}
}
{
protected void Page_Load(object sender, EventArgs e)
{
Cache cache = HttpContext.Current.Cache;
//文件缓存依赖
cache.Insert("CC", "依赖项测试", new
CacheDependency(@"D:\123.txt"));
//这时候在about.aspx页面添加一行代码,当更改一下D:123.txt时,cache["cc"]会立即被清空
}
}
{
protected void Page_Load(object sender, EventArgs e)
{
//直接打开本页面,输出缓存依赖项测试
//当更改D:\123.txt之后,在刷新,输出空,表明该Cache是依赖于D:\123.txt的
Response.Write(HttpContext.Current.Cache["CC"]);
}
}
下面来看下绝对过期时间的示例,index.aspx.cs:
{
protected void Page_Load(object sender, EventArgs e)
{
Cache cache = HttpContext.Current.Cache;
//5秒后就到期,立即移除,没商量
cache.Insert("DD", "绝对过期测试", null,
DateTime.Now.AddSeconds(5),
System.Web.Caching.Cache.NoSlidingExpiration);
}
}
{
protected void Page_Load(object sender, EventArgs e)
{
//先打开index.aspx添加到缓存 然后立即打开本页面,输出 绝对过期测试
//持续刷新5秒后,不会再输出 绝对过期测试
Response.Write(HttpContext.Current.Cache["DD"]);
}
}
当超过设定时间没再使用时,才移除缓存
滑动过期测试,index.aspx.cs:
System.Web.UI.Page
{
protected void Page_Load(object sender,
EventArgs e)
{
Cache cache =
HttpContext.Current.Cache;
//弹性过期时间,当缓存没使用10秒就过期
cache.Insert("DD", "滑动过期测试", null,
System.Web.Caching.Cache.NoAbsoluteExpiration,TimeSpan.FromSeconds(10));
}
}
{
protected void Page_Load(object sender, EventArgs e)
{
//直接打开本页面,输出弹性过期测试
//如果一直不停地刷新,都会继续输出,但是当超过10秒后再刷新,不会再输出 滑动缓存测试
Response.Write(HttpContext.Current.Cache["DD"]);
}
}
DateTime 结构。当设置弹性过期时间时,请使用 TimeSpan 结构。另外,如果您创建的弹性过期时间小于零或大于一年,则将引发
ArgumentOutOfRangeException 类。
Cache类缓存的更多相关文章
- System.Web.Caching.Cache类 缓存 各种缓存依赖
原文:System.Web.Caching.Cache类 缓存 各种缓存依赖 Cache类,是一个用于缓存常用信息的类.HttpRuntime.Cache以及HttpContext.Current.C ...
- System.Web.Caching.Cache类 缓存 各种缓存依赖(转)
转自:http://www.cnblogs.com/kissdodog/archive/2013/05/07/3064895.html Cache类,是一个用于缓存常用信息的类.HttpRuntime ...
- C# System.Web.Caching.Cache类 缓存 各种缓存依赖
原文:https://www.cnblogs.com/kissdodog/archive/2013/05/07/3064895.html Cache类,是一个用于缓存常用信息的类.HttpRuntim ...
- System.Web.Caching.Cache类 缓存
1.文件缓存依赖 public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender ...
- System.Web.Caching.Cache类 Asp.Net缓存 各种缓存依赖
Cache类,是一个用于缓存常用信息的类.HttpRuntime.Cache以及HttpContext.Current.Cache都是该类的实例. 一.属性 属性 说明 Count 获取存储在缓存中的 ...
- android NDK 实用学习(四)-类缓存
1,为什么需要类缓存: 答:由于频繁的查找类及类成员变量需要很大的时间与空间开销,可参考如下文章: http://www.ibm.com/developerworks/cn/java/j-jni/ h ...
- ASP.NET Cache 类
在查找资料的过程中.原来园子里面已经有过分析了.nopCommerce架构分析系列(二)数据Cache. 接下来是一些学习补充. 1.Nop中没有System.Web.Caching.Cache的实现 ...
- Guava Cache 本地缓存组件浅析
cache组件中核心的类和接口列举如下: 接口: Cache 本地缓存的顶级接口,提供一些对缓存进行get,put的方法,以及获取缓存统计数据的方法等. LoadingCache 继承了Cache接口 ...
- Mybatis源码分析之Cache二级缓存原理 (五)
一:Cache类的介绍 讲解缓存之前我们需要先了解一下Cache接口以及实现MyBatis定义了一个org.apache.ibatis.cache.Cache接口作为其Cache提供者的SPI(Ser ...
随机推荐
- 学习PID
最近在想自己的文章有些是不是写的太难以理解了呢.........竟然好多人看了还是会直接问我很多问题....... 其实PID哈靠自己想像就能自己写出来自己的代码,也许是网上的讲的太过的高深什么积分微 ...
- mySQL、mariaDB、noSQL、SQL server、redis之间是什么关系?
1.首先,从数据库类型上分类,mySQL.mariaDB.SQL server这3种属于关系型数据库. noSQL属于非关系型数据库,被视为数据库革命者. redis成为内存缓存数据库,而前面的两种类 ...
- 由String的构造方法引申出来的java字符编码
在String类的constructors中,有一个constructor是将int数组类型转化为字符串: int[] num = {48,49,50,51,52}; String numStr = ...
- 前端魔法堂——异常不仅仅是try/catch
前言 编程时我们往往拿到的是业务流程正确的业务说明文档或规范,但实际开发中却布满荆棘和例外情况,而这些例外中包含业务用例的例外,也包含技术上的例外.对于业务用例的例外我们别无它法,必须要求实施人员与 ...
- Ubuntu使用Windows下的conio.h
把虚线框里面的内容粘贴进文档文本里面 --------------------------------------------------------------------------------- ...
- 剖析Prometheus的内部存储机制
Prometheus有着非常高效的时间序列数据存储方法,每个采样数据仅仅占用3.5byte左右空间,上百万条时间序列,30秒间隔,保留60天,大概花了200多G(引用官方PPT). 接下来让我们看看他 ...
- Spring批量更新batchUpdate提交和Hibernate批量更新executeUpdate
1:先看hibernate的批量更新处理. 版本背景:hibernate 5.0.8 applicationContext.xml 配置清单: <?xml version="1.0&q ...
- 【转】Linux设备驱动--块设备(一)之概念和框架
原文地址:Linux设备驱动--块设备(一)之概念和框架 基本概念 块设备(blockdevice) --- 是一种具有一定结构的随机存取设备,对这种设备的读写是按块进行的,他使用缓冲区来存放暂时 ...
- Java 多线程的一些问题
1.volatile关键字的作用 一个非常重要的问题,是每个学习.应用多线程的Java程序员都必须掌握的.理解volatile关键字的作用的前提是要理解Java内存模型,volatile关键字的作用主 ...
- LINUX 笔记-ubuntu 配置 jdk 环境
在 /etc/profile 文件尾添加 JAVA_HOME=/opt/jdk1.8.0JRE_HOME=${JAVA_HOME}/jre PATH=$PATH:$HOME/bin:$JAVA_H ...