需要一些幫助來澄清概念。yii緩存和couchbase
$sql = 'SELECT * FROM tbl_post LIMIT 20';
$dependency = new CDbCacheDependency('SELECT MAX(update_time) FROM tbl_post');
$rows = Yii::app()->db->cache(1000, $dependency)->createCommand($sql)->queryAll();
1.如果緩存包含由SQL語句索引的條目。
2.如果依賴關係沒有改變(最大update_time值與查詢結果保存在緩存中時相同)。
我不明白上面的解釋是什麼意思。尤其是關於update_time最大值的第二個。如果我錯了,請糾正我。
tbl_post表中有一個update_time列。每當更新行時,update_time也會更新。如果從緩存中檢索帖子,CDbCacheDependency將首先查詢數據庫中的MAX(update_time)?這樣做的目的是什麼?它在保持緩存更新的過程中究竟有什麼作用?
另一個問題是關於memcache。我知道可以對內存緩存服務器進行集羣。假設我有以下配置。
1美國的memcache服務器。 1歐洲的memcache服務器。
我的Yii網站利用2個節點的集羣。 memcache將拆分2個節點之間的緩存。
1.user A從數據庫中檢索一個帖子並對其進行緩存。假設(123,$模型)在美國節點。
2.用戶B想要從歐洲找回相同的帖子。將尋找密鑰123找到緩存?如果兩個用戶都在美國或歐洲,是否重要?
謝謝!
因此,依賴性有助於保存數據庫查詢,而犧牲每次執行另一個短的查詢? 如果查詢很複雜,我認爲有顯着的節省,但否則,依賴並沒有多大幫助? 有沒有更好的辦法,通過取消依賴查詢? – twb 2012-07-12 06:00:19
在大多數情況下,您不需要依賴關係。只有當你真的需要新的數據時,你才應該使用它 – sl4mmer 2012-07-12 13:55:44
順便說一句 - 如果我的回答很有用,你可以投票,或將其標記爲解決方案 – sl4mmer 2012-07-12 13:57:26