ホームページ  >  記事  >  バックエンド開発  >  memcache データが大きすぎるため、$mem->get($key) の結果が bool (false) になります。何か良い解決策があれば教えてください。ありがとうございます。

memcache データが大きすぎるため、$mem->get($key) の結果が bool (false) になります。何か良い解決策があれば教えてください。ありがとうございます。

WBOY
WBOYオリジナル
2016-06-23 14:05:531218ブラウズ

20,000件のデータを選択し、memcacheのキャッシュ内容を取得し、通常通り表示します。


しかし、memcache キャッシュの内容を取得するために 25000 個のデータを選択すると、結果は bool (false) になります

簡単に言うと、検索結果の内容が大きすぎるため、memcache キャッシュを生成できません。

専門家のご指導をお待ちしております、ありがとうございます。


ディスカッションへの返信 (解決策)

確かに、memcache をデータベースとして使用すると、メモリが十分でない場合、memcache の値が保存されます。 false を返します。これが私の理解です。専門家がどのように答えるか楽しみです。

memcache は古いものを自動的に削除し、新しいものに置き換えます。


コードを上げてください。コードがない場合は、私にハンマーを与えてください

このように memcache を使用するのは少し気が狂っているようです

memcache は 1M を超えないようにすることをお勧めします。そうでない場合は、笑


Redis を使用してみてください

memcache は古いものを自動的にクリーンアップし、代わりに新しいものを使用する必要があります。


コードをアップロードしてください。コードがない場合は、ハンマーを与えてください

//Connect
$mem = new Memcache;
$mem->connect("127.0.0.1", 11211) or die ("接続できませんでした");
print_r($mem->getStats());
$q="select * from Uploadfile"; key=md5($q);

if(!($datas=$mem->get($key)))
{
echo "MySQL
からデータを読み取る"
$rs=$db_oa- >Execute($q);
while (!$rs->EOF)
{
$ss.=$rs->f("fileonsvrname")."
"; ;Movenext();
}
$mem ->set($key, $ss, 0, 20); //set 設定が無効です (問題)
$datas = $mem->get($key);
}
else
{
echo "memcached
からデータを読み取る";
}
var_dump($datas) //出力結果は (Array ([pid] => 1612 [uptime] => 21152) [時間] => 1366094659 [バージョン] => 1.2.6 [カーソル項目] => 2 [バイト数] => 1401127 2 [合計接続数] => 39 [接続構造] => 3 [取得_ヒット数] => [bytes_read] => 14237871 [bytes_writing] = > 21454105 [limit_maxbytes] => 67108864 [threads] => 1 )
MySQL からデータを読み取る

解決に役立つ答えはありますか問題です、ありがとう。 (笑)構築、肯定です、肯定です 1M を超えることはできません

$ss を保存して、1M を超えるかどうかを確認してください

これの意味がわかりません

検索を高速化したいだけの場合は、メモリを使用してくださいテーブル。 ENGINE=MEMORY

速度は少なくとも 1 桁高速です

memcache から必要なコンテンツを取得するのは簡単な作業ではありません

この結果が memcache に格納される理由がわかりません。必要ですか? ? ? ?どのような効率を向上させたいですか?

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。