2011-02-04 10 views
0

私はCakePHPアプリケーションでMemcachedを使用してMySQL結果セットをキャッシュしています。私がキャッシングしている1つの結果セットは、約半分が空です。CakePHPのMemcachedで空の結果セットと未設定のキーをチェックする方法

私が抱えている問題は、結果セットが空で、Memcachedキーを設定すると、CakePHPのfindメソッドから空白の結果がセットされるということです。

次のページの読み込み時にスクリプト内のMemcachedキーをチェックすると、Memcachedキーの値を読み取るとfalseが返されるため、クエリが再度実行されます。

は、ここではCakePHPのキャッシュユーティリティを使用して、私の一般的なmemcachedのロジックです:

存在しないMemcachedのキーと偽/空が含まれているキーを区別するためにキャッシュをチェックするのがベストプラクティスは何
if(!$resultsArray = Cache::read('results_array')) { 
    $resultsArray = $this->Model->find('all', $params); 
    Cache::write('results_array', $resultsArray); 
} 

以前の検索関数の値? (多分これは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); 
} 

false/null区別が正常に動作しますが、それは理論的に必要がある場合はあなたを伝えることができるようにかかわらず、私は、Memcachedのと十分な経験を持っていません。

0

falseを空の値と区別するために、厳密な比較演算子(!==または===)を使用する必要があります。

しかし、キャッシュされた値falseと存在しないMemcachedキーを区別する方法はないと思います。

関連する問題