【状态保持】Cache 基于SQL数据库的缓存依赖-------轮询机制详解.doc

【状态保持】Cache 基于SQL数据库的缓存依赖-------轮询机制详解.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
【状态保持】Cache 基于SQL数据库的缓存依赖-------轮询机制详解

【状态保持】Cache 基于SQL数据库的缓存依赖轮询机制详解 当数据库中的信息发生变化的时候,应用程序能够获取变化的通知是缓存依赖得以实现的基础。应用程序可以通过两种途径获取数据变化的信息:   1. 数据库通知? 当数据库中的信息发生变化的时候,数据库会主动通知Framework?或者说通知应用程序。   2. 轮询(今天的重点) 数据库不能通知的时候,应用程序可以主动定期访问数据库(在配置文件中可以配置间隔多长时间访问一次),检查数据是否发生变化。 ???? 第一种 数据库通知是最理想的方式,但是许多数据库都不支持这个方法,SQL server 2005 + 的版本支持这个方法,如果数据库不支持通知机制比如SQL server 2000 数据库 现在主机比较普遍的数据库,那么我们就得通过轮询机制来实现。 ???? 轮询:? 使用轮询的话也不可能在重新查一次然后再和以前的数据做比较,如果这样的话如果我一个表里面有1000行数据我要是读100次的话是不是得比较1000 x 100 次,显然这种方法是不可行的,那怎么办捏。大家都学过触发器吧,今天的轮询机制就是通过触发器来实现的。 实现步骤简单分析: ???? 首先创建一个用于记录监控信息的表,表的字段就两个一个是表名,一个是版本号。然后,对需要监控的变增加一个触发器,当表的内容发生变化的时候进行触发。我们可以用insert delete update 触发器,如果一旦触发以上动作就在把那个监控表的版本号字段加1。 上面的步骤要我们自己动手实现起来很麻烦,没关系跟着微软混是不会吃亏滴,微软早就为我们提供好了一个工具叫Aspnet_regsql.exe 这个工具位于C:\Windows\Microsoft.NET\Framework\v2.0.50727这个路径下(也不一定但是一般就是这个路径)好了有工具了具体怎么用呢?具体帮助请运行Aspnet_regsql /? 查看下面列出本文要用到的参数   -U 用户名   -P 密码   -d 数据库名称,默认为aspnetdb数据库   -ed 为数据库打开SQL缓存依赖支持   -dd 关闭数据库的SQL缓存依赖支持   -et 指定SQL缓存依赖使用的表,需要使用-t指定表名   -dt 禁用SQL 缓存依赖使用的表,需要使用-t指定表名   -t 指定表名   -lt 列出启用缓存依赖的表名 启用数据库House 缓存依赖支持,并对Home表启用缓存依赖,如下:   aspnet_regsql -S . -E -ed -d House -et -t Home ? 运行后数据库会发生以下变化: 1. 增加了一个名称为AspNet_SqlCacheTablesForChangeNotification的表 2. Home表中增加了一个触发器 set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go ALTER TRIGGER [Home_AspNet_SqlCacheNotification_Trigger] ON [dbo].[Home] FOR INSERT, UPDATE, DELETE AS BEGIN SET NOCOUNT ON EXEC dbo.AspNet_SqlCacheUpdateChangeIdStoredProcedure NHome END 3. 增加了几个存储过程? 如下图 下面咱打开它建的那个表看看是什么东东 是不是和开始咱描述的步骤差不多它这还多了一个有关时间的列 ok 下面咱手动修改一个Home表中的数据看看这个监视表有什么变化 ? 怎么样 changeId 变了吧!应用程序就是定期查询这个表的变化然后确定是否更新缓存。 数据库配置完毕,在看看网站怎么配置吧!首先,打开web.config加入如下代码? 在system.web 节点下 !-- 基于数据库的缓存依赖 -- caching sqlCacheDependency enabled=true pollTime=500 databases add name=pubs connectionStringName=pubs pollTime=500/ /databases /sqlCacheDependency /caching 其中pollTime 属性 就是应用程序间隔多长时间主动访问一次数据库默认为1分钟,单位ms 注意最低为500

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档