当监听的指定数据库内容某张表变化时就更新缓存

先来配置数据库,启动监听服务(SQL2008下)

执行如下语句:

ALTER DATABASE OumindBlog SET NEW_BROKER WITH ROLLBACK IMMEDIATE;
ALTER DATABASE OumindBlog SET ENABLE_BROKER;

OumindBlog为数据库名称

检测数据库是否开启监听:

SELECT is_broker_enabled FROM sys.databases WHERE name = 'OumindBlog'

结果为0则是未启动,为1是启动状态

接着配置webconfig,关键代码如下:

<connectionStrings>
<add name="SqlConnection" connectionString="Data Source=MATRUE-PC;Initial Catalog=OumindBlog;User Id=sa;Password=" providerName="System.Data.SqlClient"></add>
</connectionStrings>
<system.web>
<caching>
<sqlCacheDependency enabled="true" pollTime="">
<databases>
<add name="OumindBlog" connectionStringName="SqlConnection"></add>
</databases>
</sqlCacheDependency>
</caching>

接着启动服务:

        void Application_Start(object sender, EventArgs e)
{
// 在应用程序启动时运行的代码
string conStr = System.Configuration.ConfigurationManager.ConnectionStrings["SqlConnection"].ConnectionString;
SqlDependency.Start(conStr); //启动监听服务,只需启动一次
System.Web.Caching.SqlCacheDependencyAdmin.EnableNotifications(conStr);//设置通知的数据库连接,ps:只需设置一次
System.Web.Caching.SqlCacheDependencyAdmin.EnableTableForNotifications(conStr, "dbo.BlogUser");//设置通知的数据库连接和表,ps:只需设置一次
}

因为只需要启动一次,所以我放到了Global.asax文件的Application_Start下

页面调用:

            string conStr = System.Configuration.ConfigurationManager.ConnectionStrings["SqlConnection"].ConnectionString;
string CaCheKey = "cachekey";
object objModel = CaCheHelp.GetCaChe(CaCheKey); //根据缓存索引键读取缓存对象 if (objModel == null)
{
string sql = "select * from BlogUser";
SqlConnection con = new SqlConnection(conStr);
SqlCommand cmd = new SqlCommand(sql, con);
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
System.Data.DataSet ds = new System.Data.DataSet();
adapter.Fill(ds, "cache");
System.Web.Caching.SqlCacheDependency cds = new System.Web.Caching.SqlCacheDependency("OumindBlog", "dbo.BlogUser");//建立关联
CaCheHelp.SetCaChe(CaCheKey, ds, cds);
objModel = CaCheHelp.GetCaChe(CaCheKey);
}
lable_time.InnerText = ((System.Data.DataSet)objModel).Tables[].Rows.Count.ToString();

参考:

http://kb.cnblogs.com/page/69727/   用这个方法我数据库配置不成功,紧接着找到了下面的解决方法:http://www.csharpwin.com/dotnetspace/13325r7020.shtml

数据库启动缓存监听时报错“请为此数据库启用 Service Broker” 可以参考这个:http://www.cnblogs.com/wanghk/archive/2012/05/12/2497170.html

.net 缓存之数据库缓存依赖的更多相关文章

  1. Web前后端缓存技术(缓存的主要作用是什么)

    Web前后端缓存技术Web前后端缓存技术(缓存的主要作用是什么) 一.总结 一句话总结: 加快页面打开速度 减少网络带宽消耗 降低服务器压力 1.在Web应用中,应用缓存的地方有哪些? 主要有浏览器缓 ...

  2. ASP.NET缓存全解析6:数据库缓存依赖 转自网络原文作者李天平

    更多的时候,我们的服务器性能损耗还是在查询数据库的时候,所以对数据库的缓存还是显得特别重要,上面几种方式都可以实现部分数据缓存功能.但问题是我们的数据有时候是在变化的,这样用户可能在缓存期间查询的数据 ...

  3. (转)ASP.NET缓存全解析6:数据库缓存依赖

    ASP.NET缓存全解析文章索引 ASP.NET缓存全解析1:缓存的概述 ASP.NET缓存全解析2:页面输出缓存 ASP.NET缓存全解析3:页面局部缓存 ASP.NET缓存全解析4:应用程序数据缓 ...

  4. Asp.net数据库缓存依赖

    Asp.net数据库缓存依赖 更多的时候,我们的服务器性能损耗还是在查询数据库的时候,所以对数据库的缓存还是显得特别重要,上面几种方式都可以实现部分数据缓存功能.但问题是我们的数据有时候是在变化的,这 ...

  5. Sql缓存依赖--数据库缓存

    •依赖于文件内容CacheDependency cDep = new CacheDependency(filePath); •依赖于数据库内容(轮询机制/通知机制)一:轮询机制 1.在数据库新建版本表 ...

  6. ASP.NET 数据库缓存依赖

    By Peter A. Bromberg, Ph.D. 在ASP.NET中,Cache类最酷的特点是它能根据各种依赖来良好的控制自己的行为.以文件为基础的依赖是最有用的,文件依赖项是通过使用 Cach ...

  7. Yii2.0数据库缓存依赖发布的使用理解

    对于产品中经常需要生成一些缓存类的东西,比如系统基础配置,商品分类等,每次修改调整后都要手动进行缓存发布,是不是非常麻烦!这时候Yii2.0的缓存依赖发布就起到至关重要的作用了!现将主要的使用流程介绍 ...

  8. Asp.net mvc+EF+Sql Server2008数据库缓存依赖

    1.开启数据库缓存依赖功能(开启对数据库中表Article和ArticleType的缓存) (注:)如果要配置SqlCacheDependency,则需要以命令行的方式执行. aspnet_regsq ...

  9. Django实现表单验证、CSRF、cookie和session、缓存、数据库多表操作(双下划綫)

    通常验证用户输入是否合法的话,是前端js和后端共同验证的,这是因为前端js是可以被禁用的,假如被禁用了,那就没法用js实现验证合法与否了,也就是即使用户输入的不合法,但是也没提示,用户也不知道怎么输入 ...

随机推荐

  1. 项目中nodejs包高效升级插件npm-check-updates

    nodejs包高效升级插件npm-check-updates 最近想升级npm的包 1.//常规的包升级方式/2.npm update (包) 到npm一搜发现了一个很好的升级工具 npm-check ...

  2. [原创]java WEB学习笔记28: 会话与状态管理Cookie 机制

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  3. cpu架构

    转自 http://blog.csdn.net/wyzxg/article/details/5027738 CPU架构 Architecture ,结构.架构,这个词用于 CPU 的时候是指 CPU ...

  4. HDU 4089 Activation:概率dp + 迭代【手动消元】

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4089 题意: 有n个人在排队激活游戏,Tomato排在第m个. 每次队列中的第一个人去激活游戏,有可能 ...

  5. php深入浅出session

    1. session概念 0 2. http协议与状态保持 0 3. 理解cookie 0 4. php中session的生成机制 2 5. php中session的过期回收机制 3 6. php中s ...

  6. 常用的MySQL语句写法

    常用的MySQL语句写法 MySQL的SQL语句写法,除了那些基本的之外,还有一些也算比较常用的,这里记录下来,以便以后查找.     好记性不如烂笔头,这话说的太有道理了,一段时间不写它,还真容易忘 ...

  7. shingling算法——提取特征,m个hash函数做指纹计算,针对特征hash后变成m维向量,最后利用union-find算法计算相似性

    shingling算法用于计算两个文档的相似度,例如,用于网页去重.维基百科对w-shingling的定义如下: In natural language processing a w-shinglin ...

  8. vue2.0使用Sortable.js实现的拖拽功能

    简介 在使用vue1.x之前的版本的时候,页面中的拖拽功能,我在项目中是直接用的jQuery ui中的sortable.js,只是在拖拽完成后,在update的回调函数中又重新排序了存放数据的数组.但 ...

  9. php导出内容到txt并自动弹出下载文件

    php将内容保存到txt文件中,并自动弹出下载文件窗口的方法: $id=array('我爱学习网http://www.5ixuexiwang.com','汇享在线工具箱http://tool.huix ...

  10. IE input 去掉文本框的叉叉和密码输入框的眼睛图标

    ::-ms-clear, ::-ms-reveal{display: none;}