まず、キーは多くの文字で構成されているようです。キー名もメモリ (1 バイト/文字) を占有するので、できるだけ短くするようにしてください。キー名が値よりも大きい状況を見てきました。これは、空の配列または空の値を格納する場合に発生する可能性があります。
キー構造。あなたの例から、保存したいオブジェクトはパラメーターによって識別されると思います(1つはおそらくアイテムIDであるか、検索用のフィルターです[...])。プレフィックスから始めます。プレフィックスは、オブジェクト クラスの名前 (またはオブジェクト全般を表す簡略化された名前) にする必要があります。
ほとんどの場合、キーにはプレフィックスと識別子が含まれます。あなたの例では、複数の識別子があります。そのうちの 1 つが一意の ID である場合は、onlyprefix + id
で十分です。
オブジェクトが大きく、常にすべてを使用するとは限らない場合は、戦略を複数のキー ストレージに変更します。最も一般的な値を格納するため、または値が個別のキーに格納されるオブジェクトのコンポーネントを格納するために、1 つのメイン キーを使用します。パイプを利用し、1 つの「複数の」クエリを使用して 1 つの接続でオブジェクト全体を取得します。
mainKey = prefix + objectId;
object = getFromCache(mainKey);
startCachePipeline();
foreach (object[properties] as property) {
object->property = getFromCache(prefix + objectId + property);
}
endCachePipeline();
「Person」オブジェクトの例の構造は次のようになります。
person_33 = array(
properties => array(age, height, weight)
);
person_33_age = 28;
person_33_height = 6;
person_33_weight = 150;
Memcached は、内部に格納されているオブジェクトのサイズが類似している場合にメモリを最も効率的に使用します。オブジェクト間のサイズの差が大きいほど (1 つの失われた大きなオブジェクトや特異なケースについては話していませんが、メモリも無駄になります)、無駄なメモリが多くなります。
それが役に立てば幸い!