不使用資料庫快取依賴項實現同樣的功能

2022-02-03 21:35:33 字數 1708 閱讀 7930

不使用快取  來回和資料庫打交道 非常耗時 造成效率低  尤其是在資料量非常龐大的情況下

可是加了快取 加多少時間的快取? 新聞要保證實時更新 一發布立刻顯示出來

微軟給出了解決方法 資料庫快取依賴項 但是貌似只能用在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

這樣就把所有以

資料庫快取依賴

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

六 資料庫快取依賴

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

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

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