程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> 在作緩存時使用SqlCacheDependency

在作緩存時使用SqlCacheDependency

編輯:關於.NET

今天要說的是在緩存時使用SqlCacheDependency。其應用場景是IP地址屏蔽,數據庫裡有一張表IPBlocked,記錄了被屏蔽的 IP。由於每次進行注冊或嘗試登錄時都要檢查IP,而IP屏蔽表又不會經常變化,所以需要使用緩存。並且該緩存依賴該數據表,即如果表中數據發生了變化,緩存應該失效。

好困啊,不多扯了,我這裡就給出操作步驟。

1. 修改web.config,啟用SqlCacheDependency。將下列代碼加入web.config的<system.web>節:

<caching>
    <sqlCacheDependency enabled="true">
      <databases>
        <add connectionStringName="regex_libConnectionString" name="IPBlockedDependency"/>
      </databases>
    </sqlCacheDependency>
  </caching>

這裡的 connectionStringName指定了在<connectionStrings>中添加的某一個連接字符串。name則是為該SqlCacheDependency起的名字,這個名字將在第3步中用到。

2. 執行下述命令,為數據庫啟用緩存依賴:

C:\Program Files\Microsoft Visual Studio 9.0\VC>aspnet_regsql -C  "Data Source=.;Initial Catalog=regex-lib;Integrated Security=True"  -ed -et -t  "IPBlocked"

這裡 -C後面的字符串是連接字符串(請替換成自己所需要的值),-t參數後面的字符串是數據表的名字。命令執行後,數據庫中會多出一個 AspNet_SqlCacheTablesForChangeNotification表。

3. 在代碼中使用緩存,並為其設置SqlCacheDependency依賴:

private static string[] GetBlockedIPs()
  {
    // 1嘗試從緩存中讀取
    string[] ips = (string[])HttpContext.Current.Cache[BlockedIPCacheKey];

    if (ips != null)
      return ips;

    // 2從數據庫中讀取
    using (RxDataContext db = new RxDataContext())
    {
      ips = db.IPBlockeds.Select(ipb => ipb.UserIP).ToArray();
    }

    // 3放入緩存
    SqlCacheDependency depend = new SqlCacheDependency("IPBlockedDependency", "IPBlocked");
    HttpContext.Current.Cache.Insert(BlockedIPCacheKey, ips, depend);

    return ips;
  }

創建 SqlCacheDependency時需要指定web.config中定義的SqlCacheDependency名字,並指定數據表的名稱。

好了,這只是一個步驟列表,或者可以當作一個checklist用。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved