Spec-Zone .ru
спецификации, руководства, описания, API

15.6.3.2. Используя memcached как MySQL Caching Layer

При использовании memcached, чтобы кэшировать данные MySQL, Ваше приложение должно получить данные от базы данных и загрузить соответствующие пары ключ/значение в кэш. Затем, последующие поиски могут быть сделаны непосредственно от кэша.

Поскольку у MySQL есть свои собственные механизмы кэширования в памяти для запрашиваемых данных, такой как InnoDB пул буферов и кэш запроса MySQL, ищите возможности вне загрузки отдельных значений столбцов или строк в кэш. Предпочтите кэшировать составные значения, такие как полученные от многократных таблиц до запроса соединения, или наборов результатов, собранных от многократных строк.

Предостережение

Ограничьте информацию в кэше к нечувствительным данным, потому что нет никакой безопасности, требуемой получить доступ или обновить информацию в пределах memcached экземпляра. У любого с доступом к машине есть возможность считать, просмотреть и потенциально обновить информацию. Чтобы сохранить данные безопасными, зашифруйте информацию прежде, чем кэшировать это. Чтобы ограничить пользователей, способных к соединению с сервером, или отключить сетевой доступ, или, используют IPTables или подобные методы, чтобы ограничить доступ к memcached портам к избранному набору узлов.

Можно представить memcached к существующему приложению, даже если кэширование не было частью оригинального проекта. На многих языках и средах изменения к приложению будут только несколькими строками, сначала чтобы попытаться читать из кэша, загружая данные, отступить к старому методу, если информация не будет кэшироваться, и обновить кэш с информацией, как только данные были считаны.

Общая последовательность для того, чтобы использовать memcached на любом языке как кэширующееся решение для MySQL следующие:

  1. Запросите элемент от кэша.

  2. Если элемент существует, используйте данные элемента.

  3. Если элемент не существует, загружает данные из MySQL, и хранит значение в кэш. Это означает, что значение доступно следующему клиенту, который запрашивает это от кэша.

Для блок-схемы этой последовательности см. рисунок 15.8, "Типичная memcached Блок-схема Приложения".

Рисунок 15.8. Типичная memcached Блок-схема Приложения

Типичная memcached Блок-схема Приложения

Адаптация Базы данных Лучшие Методы к memcached Приложениям

Самый прямой способ кэшировать данные MySQL состоит в том, чтобы использовать таблицу на 2 столбца, где первый столбец является первичным ключом. Из-за требований уникальности для memcached ключей удостоверьтесь, что Ваша схема базы данных делает соответствующее использование первичных ключей и ограничений на уникальность данных.

Если Вы комбинируете многократные значения столбцов в единственное memcached значение элемента, выбираете типы данных, чтобы облегчить анализировать значение назад в его компоненты, например при использовании символа разделителя между числовыми значениями.

Запросы, которые отображаются наиболее легко на memcached поиски, являются теми с синглом WHERE пункт, используя = или IN оператор. Для сложного WHERE пункты, или те, которые используют операторы такой как <, >, BETWEEN, или LIKE, memcached не обеспечивает простой или эффективный способ отсканировать через или фильтровать ключи или присваиваемые значения, так обычно Вы выполняете те операции как SQL-запросы на базовой базе данных.