Memcacheは、設計による分散キャッシュです。サーバーのプールを使用する場合、オブジェクトは、サーバーの重みとキー自体のハッシュに基づいてサーバーを選択するキー配布メカニズムによって、すべてのサーバーに格納されます。
ここで、2つのmemcacheサーバーのセットアップでは、次のようになります。
$memcache = new Memcache;
$memcache->addServer('memcache_host1', 11211);
$memcache->addServer('memcache_host2', 11211);
これらの呼び出しを投稿すると、Memcache :: addServer呼び出しでデフォルトの重みが選択されるため、phpプロセスは2つのサーバーを含むサーバープールを確認し、オブジェクトをそれらに均等に分散します。したがって、Memcache::getまたはMemcache::setを呼び出すと、キーに応じてオブジェクトが保存されるか、サーバープールから適切なホストからキー値が取得されます。
ただし、Memcache :: connectはホストプールを再初期化し、使用可能なホストは1つだけであり、すべてのオブジェクトがそのホストに保存されていると想定します。これは、これを行うと次のことも意味します。
$memcache = new Memcache;
$memcache->addServer('memcache_host1', 11211);
$memcache->addServer('memcache_host2', 11211);
$memcache->connect('memcache_host1', 11211);
最後の呼び出しは、Memcache :: connect呼び出しがmemcache_host1に保存された後、サーバープールとすべてのキーをクリアします。したがって、Memcache :: connectは、統計、メンテナンス操作、または特別なキャッシュスキームを取得するためにプール内の特定のホストと通信することが意図されていない限り、単一のホストセットアップで理想的に使用され、プールでは使用されません。ここでより多くの議論。