缓存依赖(文件、数据库)
前言缓存的基本用法介绍:我推荐看下 asp.net缓存。 本篇,我主要写下一般sql的缓存依赖,还有使用Mvc过滤器的数据库缓存依赖。 什么是缓存依赖1.缓存:是把你要访问的资源,放在内存中,占用一定的内存空间,从而是用户读取内存中的数据,进而减少读取数据库,或资源文件的次数,从而对你的程序并发量,以及返回请求速率上得到提高的一种机制。 2.缓存的不及时性:由于在缓存的作用时间内,数据放在内存中,不知道数据源是否已经改变,从而是信息失去即时效应。 3.解决不及时性:为啦解决第二条的不及时性,微软想到的就是缓存依赖 4.缓存依赖:就是缓存通过监测依赖项(文件或数据库)的读写,来通知缓存是否过期的一种机制。比如,依赖项是123.txt文件,缓存的数据是234.txt中的数据,那么缓存机制可通过监测123.txt文件中数据的是否变化,来移除缓存234.txt文件的数据。感觉扯淡,还是上代码更给力。 缓存依赖项(文件)//文件缓存依赖 if (cache.Get("key") == null)如果依赖项中的数据发生变化,此会被通知缓存清空(系统完成清空) { CacheDependency dp = new CacheDependency(Server.MapPath(/Data/123.txt"));建立缓存依赖项dp string str = DoIOFile.ReadFiles(/Data/111.txt"); cache.Insert(",str,dp); } Response.Write(cache.Get(")); 如果123.txt这个文件的内容不变就一直读取缓存中的数据,一旦123.txt文件中的数据改变里面重新读取111.txt文件中的数据 效果:缓存的数据是111.txt中的数据,111.txt中的数据发生变化,钥匙为key的缓存不会被清空,也就是依旧显示没改前的数据。但是如果缓存依赖项123.txt中的数据一旦发生变化,缓存立马被清空,重新写入缓存中新的数据。这就是缓存依赖的好处,你可以试下,我不忽悠你。 缓存依赖项(文件夹)文件夹缓存依赖
/Data建立缓存依赖项dp
111.txt 效果:这里/Data是个文件夹,他下面直属Data所有一级文件(就是不能算嵌套文件夹的文件)如果有变动,都会触发通知,清空缓存。
缓存依赖项(多文件)多文件依赖项
如果依赖项中的数据发生变化,此会被通知缓存清空(系统完成清空)
{
CacheDependency dp1 = /Data/123/123.txt")); 这里是监视文件或目录
CacheDependency dp2 = "));
CacheDependency[] dps = new CacheDependency[] { dp1,dp2 };
AggregateCacheDependency aDp = new AggregateCacheDependency(); 多个依赖项
aDp.Add(dps);
"));
|