系統快取學習(六)資料庫快取依賴

2021-05-23 18:48:30 字數 2113 閱讀 9022

更多的時候,我們的伺服器效能損耗還是在查詢資料庫的時候,所以對資料庫的快取還是顯得特別重要,上面幾種方式都可以實現部分資料快取功能。但問題是我們的資料有時候是在變化的,這樣使用者可能在快取期間查詢的資料就是老的資料,從而導致資料的不一致。那有沒有辦法做到,資料如果不變化,使用者就一直從快取中取資料,一旦資料變化,系統能自動更新快取中的資料,從而讓使用者得到更好的使用者體驗。

答案是肯定的!.net已經為我們提供了這樣一種非常好的解決方法:sqlcachedependency資料庫快取依賴。

實現步驟:

下面就讓我們看一下如何實現資料庫快取依賴功能:

第一步: 修改web.config,讓專案啟用sqlcachedependency 。

將下列**加入web.config的節:

這裡的connectionstringname指定了在中新增的某乙個連線字串。name則是為該sqlcachedependency起的名字,這個名字將在第3步中用到。

sqlcachedependency類會自動完成對此配置節資訊的讀取以建立和資料庫之間的聯絡。

第二步:執行下述命令,為 資料庫啟用快取依賴。

如果要配置sqlcachedependency,則需要以命令列的方式執行。

aspnet_regsql.exe工具位於windows//microsoft.net//framework//[版本]資料夾中。

aspnet_regsql -c "data source=127.0.0.1;initial catalog=codematic;user id=sa;password=" -ed -et -t "p_product"

引數-c後面的字串是連線字串(請替換成自己所需要的值),

引數-t後面的字串是資料表的名字。

執行結果如圖15-3所示:

命令執行後,在指定的資料庫中會多出乙個aspnet_sqlcachetablesforchangenotification表。

第三步:在**中使用快取,並為其設定sqlcachedependency依賴:

///

/// 獲取當前應用程式指定cachekey的cache物件值

///

///

索引鍵值

/// 返回快取物件

public static object getcache(string cachekey)

///

/// 設定以快取依賴的方式快取資料

///

///

索引鍵值

///快取物件

///依賴物件

public static void setcache(string cachekey, object objobject, system.web.caching.cachedependency dep)

protected void page_load(object sender, eventargs e)

}           

gridview1.datasource = (dataset)objmodel;

gridview1.databind();

} //查詢資料

private dataset getdata()

從以上**可以看出,和檔案依賴基本相同,只是在存放快取setcache時存入的依賴物件不同罷了。這裡用的是sqlcachedependency。

其中,建立sqlcachedependency的構造方法:

public sqlcachedependency (string databaseentryname,string tablename)

databaseentryname :是在web.config 檔案的 caching 節的 sqlcachedependency 的 databases 元素中定義的資料庫的名稱。

tablename :與 sqlcachedependency 關聯的資料庫表的名稱。

這樣,只有當p_product表的內容發生變化時,查詢操作才會重新查詢資料更新快取的內容,可以大大減少資料庫的重複查詢和提高系統的效能和執行效率。

六 資料庫快取依賴

更多的時候,我們的伺服器效能損耗還是在查詢資料庫的時候,所以對資料庫的快取還是顯得特別重要,上面幾種方式都可以實現部分資料快取功能。但問題 是我們的資料有時候是在變化的,這樣使用者可能在快取期間查詢的資料就是老的資料,從而導致資料的不一致。那有沒有辦法做到,資料如果不變化,使用者就一直從 快取中取資...

資料庫快取依賴

更多的時候,我們的伺服器效能損耗還是在查詢資料庫的時候,所以對資料庫的快取還是顯得特別重要,上面幾種方式都可以實現部分資料快取功能。但問題是我們的資料有時候是在變化的,這樣使用者可能在快取期間查詢的資料就是老的資料,從而導致資料的不一致。那有沒有辦法做到,資料如果不變化,使用者就一直從快取中取資料,...

系統快取全解析(五) 資料庫快取依賴

更多的時候,我們的伺服器效能損耗還是在查詢資料庫的時候,所以對資料庫的快取還是顯得特別重要,上面幾種方式都可以實現部分資料快取功能。但問題是我們的資料有時候是在變化的,這樣使用者可能在快取期間查詢的資料就是老的資料,從而導致資料的不一致。那有沒有辦法做到,資料如果不變化,使用者就一直從快取中取資料,...