データ クエリでは、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 から始めましょう。