.net 缓存之数据库缓存依赖
当监听的指定数据库内容某张表变化时就更新缓存
先来配置数据库,启动监听服务(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 缓存之数据库缓存依赖的更多相关文章
- Web前后端缓存技术(缓存的主要作用是什么)
Web前后端缓存技术Web前后端缓存技术(缓存的主要作用是什么) 一.总结 一句话总结: 加快页面打开速度 减少网络带宽消耗 降低服务器压力 1.在Web应用中,应用缓存的地方有哪些? 主要有浏览器缓 ...
- ASP.NET缓存全解析6:数据库缓存依赖 转自网络原文作者李天平
更多的时候,我们的服务器性能损耗还是在查询数据库的时候,所以对数据库的缓存还是显得特别重要,上面几种方式都可以实现部分数据缓存功能.但问题是我们的数据有时候是在变化的,这样用户可能在缓存期间查询的数据 ...
- (转)ASP.NET缓存全解析6:数据库缓存依赖
ASP.NET缓存全解析文章索引 ASP.NET缓存全解析1:缓存的概述 ASP.NET缓存全解析2:页面输出缓存 ASP.NET缓存全解析3:页面局部缓存 ASP.NET缓存全解析4:应用程序数据缓 ...
- Asp.net数据库缓存依赖
Asp.net数据库缓存依赖 更多的时候,我们的服务器性能损耗还是在查询数据库的时候,所以对数据库的缓存还是显得特别重要,上面几种方式都可以实现部分数据缓存功能.但问题是我们的数据有时候是在变化的,这 ...
- Sql缓存依赖--数据库缓存
•依赖于文件内容CacheDependency cDep = new CacheDependency(filePath); •依赖于数据库内容(轮询机制/通知机制)一:轮询机制 1.在数据库新建版本表 ...
- ASP.NET 数据库缓存依赖
By Peter A. Bromberg, Ph.D. 在ASP.NET中,Cache类最酷的特点是它能根据各种依赖来良好的控制自己的行为.以文件为基础的依赖是最有用的,文件依赖项是通过使用 Cach ...
- Yii2.0数据库缓存依赖发布的使用理解
对于产品中经常需要生成一些缓存类的东西,比如系统基础配置,商品分类等,每次修改调整后都要手动进行缓存发布,是不是非常麻烦!这时候Yii2.0的缓存依赖发布就起到至关重要的作用了!现将主要的使用流程介绍 ...
- Asp.net mvc+EF+Sql Server2008数据库缓存依赖
1.开启数据库缓存依赖功能(开启对数据库中表Article和ArticleType的缓存) (注:)如果要配置SqlCacheDependency,则需要以命令行的方式执行. aspnet_regsq ...
- Django实现表单验证、CSRF、cookie和session、缓存、数据库多表操作(双下划綫)
通常验证用户输入是否合法的话,是前端js和后端共同验证的,这是因为前端js是可以被禁用的,假如被禁用了,那就没法用js实现验证合法与否了,也就是即使用户输入的不合法,但是也没提示,用户也不知道怎么输入 ...
随机推荐
- js hoisting
1.变量提升 var x = 2; function test(){ console.log(x) var x = 1; } ==>运行程序报错,在test()函数中,x被提升到了顶部声明,相当 ...
- vmware 下的三种网络模式
VMWare提供三种工作模式桥接(bridge).NAT(网络地址转换)和host-only(主机模式). 桥接模式 在桥接模式下,VMWare虚拟出来的操作系统就像是局域网中的一台独立的主机(主机和 ...
- spring-boot3
更多的配置: # =================================================================== # COMMON SPRING BOOT PR ...
- Python核心编程 课后练习 第二章
2.4 使用raw_input()函数得到用户输入. (a) 创建一段脚本使用raw_input()函数从用户输入得到一个字符串, 然后显示这个用户杠杠输入的字符串. #coding = utf-8 ...
- React Native 列表的总结
React Native 列表的总结 FlatList和SectionList都是React Native中高性能的列表组件.这些新的列表组件在性能方面都有了极大的提升, 其中最主要的一个是无论列表有 ...
- X-Scan扫描端口80,443提示http TRACE 跨站攻击漏洞解决办法
在用X-Scan-v3.3扫描主机端口提示http TRACE 跨站攻击漏洞; 一,修改配置文件httpd.conf 1.1 apache下面修改httpd.conf文件,在文件最后面新建一行加入:T ...
- Vim的map
linux系统下.vimrc文件(这个文件可以在家目录新建): 这个文件记录着vim的配置信息: 如: "显示行号 set number "键映射map “如按F5,在word的前 ...
- codeforces 54A
题意:收到礼物的规则为每个假日必收到一份礼物,每K天里至少收到一份礼物,求出N天中收到的礼物的最小数量. 思路:将N天根据假日所在天数分为一段段,当假日与假日之间间隔天数hol[i]>-hol[ ...
- CentOS下查看文件和文件夹大小
当磁盘大小超过标准时会有报警提示,这时如果掌握df和du命令是非常明智的选择. df可以查看一级文件夹大小.使用比例.档案系统及其挂入点,但对文件却无能为力. 当磁盘大小超过标准时会有报警提示,这时如 ...
- hdoj1001--Sum Problem
Problem Description Hey, welcome to HDOJ(Hangzhou Dianzi University Online Judge).In this problem, y ...