クエリが常に同じである場合、つまりSELECT title, stock FROM books WHERE stock > 5
、条件が変わらないstock > 6
などの場合は、MySQL Query Cache を使用することをお勧めします。
Memcached はキー値ストアです。基本的にはキー=>値に変換できれば何でもキャッシュできます。キャッシュを実装する方法はたくさんあります。データベースから 30 行をクエリしてから行ごとにキャッシュすることもできますが、同じ行セットを何度も返す場合、ここでそれを行う理由はわかりません。memcached について考えられる最も基本的な例は次のとおりです。
// Run the query
$result = mysql_query($con, "SELECT title, stock FROM books WHERE stock > 5");
// Fetch result into one array
$rows = mysqli_fetch_all($result);
// Put the result into memcache.
$memcache_obj->add('my_books', serialize($rows), false, 30);
次に、 aを実行し$memcache_obj->get('my_books');
てシリアル化を解除し、同じ結果を取得します。
しかし、同じクエリを何度も使用しているためです。MySQL にすべてのキャッシュを処理させることができるのに、なぜ複雑になるのでしょうか? memcached オプションを使用する場合は、結果が既にキャッシュにあるかどうか、またはデータベースでレコードが変更されているかどうかを確認するロジックを実装するだけでなく、memcached サーバーをセットアップする必要があることに注意してください。
この場合、memcached よりも MySQL クエリ キャッシュを使用することをお勧めします。
ただし、MySQL クエリ キャッシュで注意する必要があることの 1 つは、クエリがまったく同じである必要があり、余分な空白やコメントが一切含まれていないことです。これは、MySQL がキャッシュからクエリ文字列を比較するための解析をまったく行わないためです。クエリのどこかに余分な文字があると、別のクエリを意味します。
Peter Zaitsev は、 http://www.mysqlperformanceblog.com/2006/07/27/mysql-query-cache/でMySQL Query Cache について非常によく説明しています。Peter Zaitsev が述べたように、MySQL Query Cache がサポートしていないものは何も必要ないことを確認してください。