不使用快取 來回和資料庫打交道 非常耗時 造成效率低 尤其是在資料量非常龐大的情況下
可是加了快取 加多少時間的快取? 新聞要保證實時更新 一發布立刻顯示出來
微軟給出了解決方法 資料庫快取依賴項 但是貌似只能用在sql上 而且要配置些東西 還有 並不透明~ 一些東西看不到
感興趣的朋友可以查下msdn 這有個部落格 也有介紹
這裡提供另一種方法
先說下大概思路 在所有查詢操作時 都把結果插入 cache 在對資料庫有操作時(增刪改) 刪除cache
有了思路 開始解決問題 這裡會遇到兩個問題
第一 : 所有查詢時 cache建 怎麼定義 保證不重複呢 第二:微軟沒有提供刪除所有cache的方法 只有cache["鍵值名"].remove(); 而沒有removeall();
下面上**和解決辦法 以及思路
#region
##根據條件得到新聞
//////
根據條件得到新聞
看上面的**
string
cachekey
=string
.format("..
", gettype(),
"getbycondition
",wherestr
+topcount);
我定義這快取鍵值不重複的方法是 用當前類+方法名+所有引數名的組合 來保證唯一性
這樣把所有查詢的方法 以及查詢結果都快取起來了~
public
static
void
clearoutputcache()
}
#region
刪除快取
//////
根據名字開頭刪除快取
//////
快取名字開頭
public
void
removeallcache(
string
startname)}}
#endregion
稍微改進下 效率又大大的提高了
當我們資料庫有變化時 比如新增了個新聞 呼叫
p.removeallcache(gettype().tostring());#region
##新增新聞
//////
新增新聞
//////
///public
intadd(cmsdemomodels.newsinfo info)
}#endregion
這樣就把所有以資料庫快取依賴
更多的時候,我們的伺服器效能損耗還是在查詢資料庫的時候,所以對資料庫的快取還是顯得特別重要,上面幾種方式都可以實現部分資料快取功能。但問題是我們的資料有時候是在變化的,這樣使用者可能在快取期間查詢的資料就是老的資料,從而導致資料的不一致。那有沒有辦法做到,資料如果不變化,使用者就一直從快取中取資料,...
六 資料庫快取依賴
更多的時候,我們的伺服器效能損耗還是在查詢資料庫的時候,所以對資料庫的快取還是顯得特別重要,上面幾種方式都可以實現部分資料快取功能。但問題 是我們的資料有時候是在變化的,這樣使用者可能在快取期間查詢的資料就是老的資料,從而導致資料的不一致。那有沒有辦法做到,資料如果不變化,使用者就一直從 快取中取資...
系統快取學習(六)資料庫快取依賴
更多的時候,我們的伺服器效能損耗還是在查詢資料庫的時候,所以對資料庫的快取還是顯得特別重要,上面幾種方式都可以實現部分資料快取功能。但問題是我們的資料有時候是在變化的,這樣使用者可能在快取期間查詢的資料就是老的資料,從而導致資料的不一致。那有沒有辦法做到,資料如果不變化,使用者就一直從快取中取資料,...