私はそれがmemcacheの内、「ressource」を記憶することが可能ですかどうかを知りたいと思い、私は現在、次のコードをしようとしているが、どうやらそれは正しくないです。memcacheを使ってmysql_queryをキャッシュする方法は?
$result = mysql_query($sSQL);
$memcache->set($key, $result, 0, $ttl);
return $result;
私はそれがmemcacheの内、「ressource」を記憶することが可能ですかどうかを知りたいと思い、私は現在、次のコードをしようとしているが、どうやらそれは正しくないです。memcacheを使ってmysql_queryをキャッシュする方法は?
$result = mysql_query($sSQL);
$memcache->set($key, $result, 0, $ttl);
return $result;
は、なぜあなたはとても必要なのでしょうか? MySQLはパフォーマンスquery cache
独自のを持っていますが、あなたはまだあなたの奇妙なアイデアをフォローしたい場合 - あなたはmemcachedのにその配列(mysql_fetch_assoc
または任意で)配列にし、その店の後にすべてのデータをフェッチする必要があります。
私は不快感に同意しなければなりません。 MySQLにキャッシュシステムがあるという理由だけで(実際にはいくつかあります)、データベースへのアクセスを最適化するメリットはありません。 MySQLのクエリキャッシュは素晴らしいですが、それはまだのような制限があります。
リモートサーバーの場合でも、Memcached is roughly 23% faster than MQCです。また、APCのオブジェクトキャッシュを使用すると、MQCだけを使用する場合に比べて最大990%の改善が得られます。
したがって、MySQLのクエリキャッシュの外部でデータベースの結果セットをキャッシュする理由はたくさんあります。結局のところ、同じスクリプトで複数回アクセスする必要がある場合、結果データをPHP変数にローカルにキャッシュします。結果セットが変更されない場合、なぜこれを複数のリクエストにわたって拡張しないのですか?
サーバーが十分に速いからといっても、効率的なコードを書くことに努力すべきではありません。この正確な目的のために、APCやMemcachedのようなアクセラレータが設計されているときは、データベースの結果をキャッシュするのに多くの努力が必要ではありません。— (some of the largest sites on the internet use Memcached in conjunction with MySQLの場合、このような「奇妙なアイデア」としてこの質問を却下しません)。
つまり、結果を最初に取得してから、APCまたはMemcachedを使用してデータをキャッシュすることができます。ただし、クエリ結果を手動でキャッシングする別の方法があります。これはMysqlnd query result cache pluginを使用することです。これは、MySQLクエリ結果のクライアントサイドキャッシュです。
Mysqlndクエリ結果キャッシュプラグインを使用すると、APC、Memcached、sqlite、またはユーザー指定のデータソースを使用してクエリを透過的にキャッシュできます。ただし、このプラグインは現在、プリペアドステートメントをキャッシュできないという点でMQCと同じ制限を共有しています。
リソースはキャッシュできません。クエリ結果... ** YES ** – ajreal