2017-01-08 6 views
1

は、私には、例えば、いくつかのアプリケーションの翻訳がキャッシュされる必要があります:PHP memcache - オブジェクト全体を保存しますか?

$translations = [ 
    'en' => [ 
     'key_1' => 'translation 1', 
     'key_2' => 'translation 2', 
     ... 
     'key_10000' => 'translation 10000', 
    ], 
    'de' => [ 
     'key_1' => 'translation 1', 
     'key_2' => 'translation 2', 
     ... 
     'key_10000' => 'translation 10000', 
    ], 
]; 
$memcache->set('translations', $translations); 

私はページ上のわずか数キーにアクセスしたい場合は、私は全体の配列をロードするために持っているので、それは多くのメモリを消費します。 memcacheの余分なキーとして各翻訳を格納する方が良いのではないでしょうか? Memcacheから何回もアクセスするのが遅くないのですか?ここでは同様

$memcache->set('translations_en_key_1', 'translation 1'); 
$memcache->set('translations_en_key_2', 'translation 2'); 
... 
$memcache->set('translations_en_key_10000', 'translation 10000'); 

$memcache->set('translations_de_key_1', 'translation 1'); 
$memcache->set('translations_de_key_2', 'translation 2'); 
... 
$memcache->set('translations_de_key_10000', 'translation 10000'); 

ありがとう!

答えて

1

まあ実際に使用する個々のキーの数によって異なります。たとえば、ページにアクセスするたびに100個のキーを使用すると、そのような巨大なオブジェクトを取得するのではなく、マルチジェット要求を行う方が理にかなっています。

また、格納するオブジェクトのサイズには1MBの制限があることを理解しておく必要があります。したがって、各翻訳が25バイトを使用する場合は、40000を超える翻訳を保存することはできません。

また、翻訳オブジェクトが25Bほど小さい場合、より多くのオブジェクトをmemcacheに格納するための最適化を行うことができます。あなたはこのlink

で見てみることができますし、より良いmemcacheの

の内部を理解するために thisを読むことができます
関連する問題