• SqlCacheDependency:asp.net SQL缓存依赖


    先看下MSDN对此类的介绍:

    在以下两者之间建立关系:一是在 ASP.NET 应用程序的 Cache 对象中存储的项;二是特定 SQL Server 数据库表或  SQL Server 2005 查询的结果。无法继承此类。

    命名空间:System.Web.Caching

    程序集:System.Web(在 system.web.dll 中)

    这是我作的一个例子:

    1. 新建一个页面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;  
              }  
          }  
      } 
      
    2. WebConfig中增加SqlCacheDependency的配置
      <caching>  
        <sqlCacheDependency enabled="true" pollTime="60000">  
          <databases>  
            <add name="ForStudy" connectionStringName="ForStudy" pollTime="60000"/>            
          </databases>   
        </sqlCacheDependency>  
      </caching> 
      
    3. 开启缓存通知
      aspnet_regsql.exe -S ADIMIN-B7575567/SQLEXPRESS -U sa -P sa -ed -d ForStudy -et -t CacheDependency
      开启对数据库ForStudy表CacheDependency表的缓存依赖,如果不开启,程序则会报异常:没有开启数据库XXX的缓存依赖,没有开启数据表XXX的缓存依赖
    4. webconfig配置
      <connectionStrings >
          <add name="ForStudy" connectionString="Data Source=ADIMIN-B7575567/SQLEXPRESS;Initial Catalog=ForStudy;Integrated Security=True"/>
        </connectionStrings>
      这是这个例子中用到的数据库连接
      开始测试
      数据库中执行
      use forstudy
      create table CacheDependency
      (
      id int identity,
      desp nvarchar(4000)
      )
      insert into CacheDependency
      values ('一')
      第一次访问界面显示:
      from db
      1 一
       
      在数据库中执行:insert into CacheDependency values ('二')
      刷新页面显示:
      from cache
      1 一
      一分钟后再次刷新页面显示:
      from cache 1 一  2 二
      因为我们设置数据库的轮询时间为1分钟,所以在一分钟之后,缓存才会更新。
      好了,这样就建起了"CacheDependency"表的缓存,不过只有在这个表的数据变化 1分钟之后才会更新缓存,这个时间可以通过修改pollTime的值来改变,最小值为500(毫秒)
  • 相关阅读:
    RAID实战案例
    文件系统常用工具实战篇
    挂载文件系统
    硬盘结构类型概述
    创建文件系统实战篇
    JumpServer的会话管理及命令过滤器应用案例
    JumpServer的权限管理
    JumpServer的用户管理
    helm基础
    hpa控制器
  • 原文地址:https://www.cnblogs.com/yuhanzhong/p/3685301.html
Copyright © 2020-2023  润新知