2011-02-04 21 views
0

我在CakePHP應用程序中使用Memcached來緩存MySQL結果集。我緩存的一個結果集大約一半時間是空的。如何在CakePHP中檢查空結果集與Memcached中的未設置鍵值

我遇到的問題是,當結果集爲空並且我設置了Memcached密鑰時,它會從CakePHP的find方法設置空/ false結果。

當我在下一頁加載的腳本中檢查Memcached密鑰時,它會再次運行該查詢,因爲讀取Memcached密鑰的值必須返回false。

下面是使用CakePHP的緩存實用程序我一般Memcached的邏輯:

if(!$resultsArray = Cache::read('results_array')) { 
    $resultsArray = $this->Model->find('all', $params); 
    Cache::write('results_array', $resultsArray); 
} 

什麼是最好的做法來檢查緩存Memcached的鍵不存在,幷包含一個假/空的主要區別來自以前的查找功能的值? (也許這比關於Memcached的PHP /編程更多)。

回答

0

建議:

if (($resultsArray = Cache::read('results_array')) === false) { 
    $resultsArray = $this->Model->find('all', $params); 
    if (!$resultsArray) { 
     $resultsArray = null; 
    } 
    Cache::write('results_array', $resultsArray); 
} 

我沒有與Memcached的足夠的經驗,雖然能夠告訴你,如果false/null區別將正常工作,但它應該在理論上。

0

您應該使用嚴格比較運算符(!=====)將false與空值區分開來。

但我不認爲有辦法區分緩存的false與不存在的Memcached密鑰之間的值。

相關問題