Ответ 1
Я согласен с большинством вещей, на которые ответил @phihag, но я должен прояснить некоторые вещи.
Memcached хранит данные в соответствии с ключом (phihag назвал его id, чтобы не путать с идентификаторами базы данных). Данные могут быть разных размеров, поэтому вы можете хранить небольшие биты (например, 1 запись, извлеченную из базы данных), или вы можете хранить огромные куски данных (например, сотни записей или целые готовые html-страницы).
Memcached не обычно используется на том же компьютере, что и сервер приложений, причина в том, что он предназначен для использования через TCP (он будет доступен через сокеты, если он был разработан для работа на том же сервере), и он был разработан как сервер объединения.
Интересная часть объединения - у вас может быть 10 машин, на которых работает Memcached, каждый из которых выделяет максимум 10 ГБ оперативной памяти для этой цели. 10 * 10 = объем свободного пространства на 100 ГБ.
Когда вы пишете значение в Memcached, только один (случайно или через некоторые алгоритмы) сервера хранит его. Когда вы пытаетесь прочитать значение из Memcached, только сервер, который его сохранил, отправит его вам.
И действительно, вы можете поместить весь сервер базы данных /memcached/application/fileserver на один и тот же компьютер, и обычно вы делаете это для вашей изолированной программной среды. Но вы также можете поместить каждый на отдельную машину и любую другую комбинацию из двух.
Если вам нужен только один сервер Memcached, вы, вероятно, будете в порядке, разместив его на том же компьютере, что и код приложения.
Если вы начинаете использовать внешний сервер кеша, такой как лак, или вы настраиваете NginX в качестве внешнего сервера кеша, вам нужно будет сконфигурировать некоторые серверы Memcached для хранения данных, которые кэшируют эти кеш-серверы переднего конца.
Если вы распространяете свою базу данных на несколько серверов и файловых серверов в CDN, это означает, что ваше приложение обрабатывает много данных за короткий промежуток времени, поэтому вам потребуется много свободного места в оперативной памяти, которое невозможно было бы использовать в одном сервере приложений.
И так как расширение пула памяти для сервера Memcached так же просто, как добавление IP-адреса нового сервера в список, вы будете масштабироваться горизонтально, как на многих серверах (это типичное использование Memcached).