ホームページ >バックエンド開発 >PHPチュートリアル >memcachedの使い方
memcachedの使い方は?
オンライン質問応答システムを作成しています。次の質問をクリックするたびに、質問を 1 つ更新します。
プロセス: 1. データベースから質問を取得します。 retrieval, $db->close()) 、次の質問で 2 ポイント。質問が完了するまで手順 1 と 2 を繰り返します。
これは、質問が取り出されるたびにデータベースに接続することに相当します。クラスメートが提案したように、データは memcached に保存できます。
これにより、データベースへの接続数を減らすことができます。
私が聞きたいのは、効果を達成するために memcached クラスをどこに置くべきかということです。
たとえば、最初の質問を取ります
まずデータベースに接続する必要があります
次に質問を取り出します
while($row=mysql_fetch_array($result){
$question[] =$row[question ];
}//これまでの質問はすべて削除されました
$mem = new Memcache; //データベース値の後に memcache クラスを置きます
$mem-> connect("127.0.0.1", 11211);
$mem->set("key",$question);
$question=$mem->get("key");
$db->close();
次に質問が来ます
1. 初めて質問を受けるときにのみデータベースに接続し、すべてのデータを $question イメージに割り当てるにはどうすればよいですか? memcache クラスで? このように書くと、値は memcache に割り当てられますが、次の質問をクリックすると、データベースに接続することと同じになります。
2. 最初の質問を読んだ後、私はコメントしました。最初の質問を読んだとき、質問はキャッシュに割り当てられているため、データベースに接続する必要はありませんが、次の質問をクリックしても何も読み込まれないと思います。最初の質問を読んだときにキャッシュしました。割り当てられた値はどこに行きましたか? ページを更新するとキャッシュ内の値が失われますか?
このクラスはどこで使用する必要があるのでしょうか?データベース接続の数を減らすために配置する必要がありますか? 使用されていることを願っています
-----解決策----------- ----------
You 上記のコードは、毎回データベースを読み取り、その値をキャッシュに書き込むことと同じです。 (false == $mem->get("key")) は、キーが存在するときに接続が存在しないように、データベースを読み取る前に使用する必要があります。
------解決策------------------
この注文
$mem = 新しい Memcache; $mem->connect("127.0.0.1", 11211); if(! $mem->get("key")) { //データベース接続クエリコード while($row=mysql_fetch_array($result){ $question[]=$row[質問]; }//これまでの質問はすべて解決されました $mem->set("キー",$question); } $question=$mem->get("キー");