SqlCacheDependency:asp.net SQL缓存依赖
先看下MSDN对此类的介绍:
在以下两者之间建立关系:一是在 ASP.NET 应用程序的 Cache 对象中存储的项;二是特定 SQL Server 数据库表或 SQL Server 2005 查询的结果。无法继承此类。
命名空间:System.Web.Caching
程序集:System.Web(在 system.web.dll 中)
这是我作的一个例子:
- 新建一个页面CacheSqlDependency.aspx,加入如下代码
protected void Page_Load(object sender, EventArgs e)
{
DataTable dt = GetTableFromDB();
dt.TableName = "CacheDependency";
TextWriter writer = new StringWriter();
dt.WriteXml(writer);
Response.Write(writer.ToString());
} private DataTable GetTableFromDB()
{
DataTable result = Cache.Get("cacheStudy") as DataTable;
if(result != null) return result; using(SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ForStudy"].ConnectionString))
{
conn.Open();
using (SqlCommand cmd = new SqlCommand("select * from CacheDependency"))
{
cmd.Connection = conn;
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = cmd;
result = new DataTable();
adapter.Fill(result); SqlCacheDependency dependency = new SqlCacheDependency("ForStudy", "CacheDependency");
Cache.Add("cacheStudy", result, dependency, DateTime.Now.AddMinutes(10), TimeSpan.Zero, CacheItemPriority.Default, null);
return result;
}
}
} - WebConfig中增加SqlCacheDependency的配置
<caching>
<sqlCacheDependency enabled="true" pollTime="60000">
<databases>
<add name="ForStudy" connectionStringName="ForStudy" pollTime="60000"/>
</databases>
</sqlCacheDependency>
</caching> - 开启缓存通知
aspnet_regsql.exe -S ADIMIN-B7575567/SQLEXPRESS -U sa -P sa -ed -d ForStudy -et -t CacheDependency
开启对数据库ForStudy表CacheDependency表的缓存依赖,如果不开启,程序则会报异常:没有开启数据库XXX的缓存依赖,没有开启数据表XXX的缓存依赖
webconfig配置
<connectionStrings >
<add name="ForStudy" connectionString="Data Source=ADIMIN-B7575567/SQLEXPRESS;Initial Catalog=ForStudy;Integrated Security=True"/>
</connectionStrings>这是这个例子中用到的数据库连接
开始测试数据库中执行use forstudycreate table CacheDependency(id int identity,desp nvarchar(4000))insert into CacheDependencyvalues ('一')第一次访问界面显示:from db1 一在数据库中执行:insert into CacheDependency values ('二')刷新页面显示:from cache1 一一分钟后再次刷新页面显示:from cache 1 一 2 二因为我们设置数据库的轮询时间为1分钟,所以在一分钟之后,缓存才会更新。好了,这样就建起了"CacheDependency"表的缓存,不过只有在这个表的数据变化 1分钟之后才会更新缓存,这个时间可以通过修改pollTime的值来改变,最小值为500(毫秒)
SqlCacheDependency:asp.net SQL缓存依赖的更多相关文章
- Asp.net数据库缓存依赖
Asp.net数据库缓存依赖 更多的时候,我们的服务器性能损耗还是在查询数据库的时候,所以对数据库的缓存还是显得特别重要,上面几种方式都可以实现部分数据缓存功能.但问题是我们的数据有时候是在变化的,这 ...
- Asp.net文件缓存依赖
Asp.net文件缓存依赖 using System; using System.Collections.Generic; using System.Linq; using System.Web; u ...
- ASP.NET 数据库缓存依赖
By Peter A. Bromberg, Ph.D. 在ASP.NET中,Cache类最酷的特点是它能根据各种依赖来良好的控制自己的行为.以文件为基础的依赖是最有用的,文件依赖项是通过使用 Cach ...
- Sql缓存依赖--数据库缓存
•依赖于文件内容CacheDependency cDep = new CacheDependency(filePath); •依赖于数据库内容(轮询机制/通知机制)一:轮询机制 1.在数据库新建版本表 ...
- ASP.NET MVC 数据库依赖缓存的实现
当数据库中的信息发生变化的时候,应用程序能够获取变化的通知是缓存依赖得以实现的基础.应用程序可以通过轮询获取数据变化的信息,使用轮询的话也不可能重新查一次后再和以前的数据做比较,如果这样的话如果我一个 ...
- C#中缓存的简单方法及使用Sql设置缓存依赖项
概述 使用Cache高速缓存可以提高数据的读取速度,减少服务器与客户端之间的数据交互.因为Cache一经创建就会占用服务器上的资源,所以Cache并不是越多越好,一般用于数据较固定,使用较频繁的地方. ...
- .Net中的缓存依赖配置
缓存--能非常好的提高网站的性能. 在訪问量大,但更新较少的站点中使用缓存,能够大大提高执行效率. 在.net中给我们提供了非常好的缓存机制.页面缓存.数据缓存,还有非常好的依赖缓存. 依赖缓存优点就 ...
- 缓存依赖中cachedependency对象
缓存依赖主要提供以下功能:1.SQL 缓存依赖项可用于应用程序缓存和页输出缓存.2.可在 SQL Server 7.0 及更高版本中使用 SQL 缓存依赖项.3.可以在网络园(一台服务器上存在多个处理 ...
- c# 数据库缓存依赖
1.为缓存依赖项启动通知数据库 在vs开发人员命令提示中运行(切换到aspnet_regsql.exe所在目录,示例目录:C:\Windows\Microsoft.NET\Framework64\v4 ...
随机推荐
- javascript数组遍历for与for in区别详解
js中遍历数组的有两种方式 复制代码代码如下: var array=['a']//标准的for循环for(var i=1;i<array.length;i++){ alert(array[ ...
- jquery 操作动态添加的元素
动态添加的元素,无法侦听到事件,写法如下: 使用函数.on 格式为: $(父元素).on('event','selector',function(){ //do something }) 例如 < ...
- Bootstrap Paginator分页插件+ajax
Bootstrap Paginator分页插件下载地址: DownloadVisit Project in GitHub Bootstrap分页插件属性介绍: http://www.cnblogs. ...
- unity 人物描边锯齿
项目原来实现描边用了2个pass,一个pass cull back 渲染政策,一个cull front 渲染轮廓,但问题是锯齿特别明显 尝试了下边缘光实现描边,效果更不行,边线是断的
- HDFS涉及ACLs的命令
What is ACL Hadoop中的ACL与Linux中的ACL机制基本相同,都是用于为文件系统提供更精细化的权限控制. 参考 HDFS ACLs: Fine-Grained Permission ...
- Version 1.5 of the JVM is not suitable for this product.Version:1.6 or greater is required
近期在公司涉及到了服务器等的扩展,smartfoxserver扩展使用的Eclipse,尽管没学过java.可是咱毕竟是C++起价的,其它语言看看也就会了,项目依然做着,近期看到某同学有一些java的 ...
- 并发 错误 java.lang.IllegalMonitorStateException: current thread not owner 分析
public class ThreadTest implements Callable<String> { public String call() throws Exception { ...
- 【深度学习】使用opencv在视频上添加文字和标记框
深度学习识别出视频的物体之后,需要在视频上画框标记出来. 接下来介绍如何使用python在视频上画框和文字 #!/usr/bin/env python # -*- coding:utf-8 -*- i ...
- SourceTree的基本使用---团队开发/参与开源
1.实践入门-团队开发 如果你看到第二部分关于“参与开源”的内容,而你的需求是团队开发,你会发现几个不方便的地方: 1.1.组长建项目,组员每次提交,都需要组长审查同意merge 如果你觉得麻烦,组长 ...
- iOS 反射 学习 和 运用
iOS 反射 学习 和 运用 反射: 通过 类名来获得生成的相应的类的实例 的这种机制 叫 反射 常用的反射方式 把 NSDictionary 转成 自定义 model 自定义 model 转 ...