ホームページ >バックエンド開発 >PHPチュートリアル >データクエリはmemcacheキャッシュを使用し、キー値はSQLによって作成され、ページングデータは変更されないソリューションを維持します

データクエリはmemcacheキャッシュを使用し、キー値はSQLによって作成され、ページングデータは変更されないソリューションを維持します

WBOY
WBOYオリジナル
2016-06-13 12:16:27962ブラウズ

データ クエリでは、memcache キャッシュと SQL で作成されたキー値が使用されます。ページング データは変更されません。
データ クエリでは、memcache キャッシュと SQL で作成されたキー値が使用されます。データがない場合、クエリとキャッシュが再起動されますが、ローカルでテストしたところ、問題はありませんでしたが、どのパラメータが渡されても SQL が変更されます。変更されたキー値に基づいて取得されるデータリストはそれに応じて変更されません。原因は何ですか
-----解決策---- ------------------
$sql md5 を処理します。
memcache キーには長さ制限があります。

$sql = "select id,avg_point,name,xpoint,ypoint,agent_area_id,area_id,supplier_id,index_img,dp_count,avg_point,deal_cate_id,ratio,area_id,note from aa (1 = 1 および is_effect=1) (18,1) の city_id は ID 順に並べられます DESC 制限 0,15";
$key = md5($GLOBALS['append_config']['IOS_CACHE_PRE'].$sql);
$info = mcache_get($key);
if(!$info){
$info = $GLOBALS['db']->getAll($sql);
mcache_set($key) ,$info);
}
-----ソリューションのアイデア----------------------
キー
----

memcached によって保存されたデータは、キーを使用して識別されます。キー
は、クライアント
のデータを一意に識別するテキスト文字列です。現在、キーの
の長さ制限は 250 文字に設定されています (もちろん、通常、
クライアントはそのような長いキーを使用する必要はありません)。
をキーに含めることはできません。制御文字または空白。

Baidu 翻訳:
memcached に格納されたデータはキー値によって識別されます。キー
は、
が保存および取得する顧客データを一意に識別する必要があるテキスト文字列です。現在、キーの
の長さ制限は 250 文字 (もちろん、通常 の顧客は長いキーを使用する必要はありません)、
キーには 制御文字やスペースを含めることはできません。

明らかにルール違反です

-----解決策のアイデア--------------------- - ls は、SQL ステートメントの長さは約 220 文字ですが、memcached の最大文字制限を超えないことを明確にしました。ただし、SQL にはスペースが含まれているため、SQL の最初のスペースの前の部分が実際にはキーとして使用されます。この場合、明らかに、ページ分割されたデータはすべて同じです。
MD5 から始めましょう。

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