今天在整理类库,正好弄到缓存这边,就找找资料看一下。System.Web.Caching.Cache是微软提供的一个Web下的类库,Cache类,是一个用于缓存常用信息的类。HttpRuntime.Cache以及HttpContext.Current.Cache都是该类的实例。查看一个类就是从它的属性、方法等方面查看,只有了解的属性,才能明白各个方法是做什么用的。

一、属性
1500287864199624.png

二、方法
1500287864384316.png

三、静态字段
1500287864918599.png

namespace CacheDemo
{
    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 = "masoft";

            Cache cache = HttpRuntime.Cache;
            cache.Insert("A",p);
            cache.Insert("B","字符串");
            
            Response.Write(cache.Get("B").ToString());     //输出 字符串
            Person p2 = cache["A"] as Person;
            Response.Write(p2.Id + " : " + p2.Name);        //输出 1 : masoft
            Response.Write(cache.EffectivePrivateBytesLimit);   //-1 只读属性
            Response.Write(cache.EffectivePercentagePhysicalMemoryLimit);   //98    开始移除项之前可以使用到98%


            Response.Write(cache.Count);        //输出 3
            Response.Write(cache["B"]);        //输出 字符串 支持索引器式的读取

            cache.Remove("BB");        //从cache中移除一项
            Response.Write("~~~" + cache["B"] + "~~~");    //移除了输出 null,但程序不报错

            foreach (var obj in cache)
            {
                Response.Write(obj.GetType() + "<br/>");
            }
        }
    }

    public class Person
    {
        public int Id
        {
            get;
            set;
        }

        public string Name
        {
            get;
            set;
        }
    }
}

四、文件缓存依赖
文件依赖已更改缓存就被清除

五、绝对过期时间
NoSlidingExpiration  绝对过期时间,当超过设定时间,立即移除。

六、滑动过期时间
NoAbsoluteExpiration  当超过设定时间没再使用时,才移除缓存

七、缓存优先级

八、缓存移除通知应用程序
Add方法的最后一个参数,委托。

九、数据库依赖缓存
需要配置数据库缓存模式
(详情查看本文来源:http://www.cnblogs.com/kissdodog/archive/2013/05/07/3064895.html

十、组合依赖缓存
当依赖的内容为多个Dependency时,可以通过AggregateCacheDependency创建依赖的组合,以便在任何一个依赖项发生变化时,使缓存项失效。
组合的缓存依赖内部为一个集合,可以保存多个缓存依赖对象,将这些缓存依赖对象作为一个整体应用在缓存项目上,当其中某一个缓存依赖失效的时候,就可以使缓存的数据被丢弃。

十一、System.Web.Caching.Cache Insert和Add方法的区别

十二、清除缓存
清空缓存主要通过Remove()方法,但是只能通过传入一个Key,清空一个。
GetEnumerator()方法用于获取所有缓存项。MoveNext()用于将位置移动到下一个缓存项。
如果想清空所有缓存,由于Cache类没有提供RemoveAll()方法我们只能Count循环删除

最后修改:2020 年 11 月 22 日 09 : 17 PM
如果觉得我的文章对你有用,请随意赞赏