25
08/2008

Взаимодействуем с memcached с помощью SQL

The English version of this post

Наткнулся на интересный вариант взаимодействия с memcached. Применен в facebook, а суть его в том, что в sql-синтаксис MySQL-сервера добавили новую конструкцию MEMCACHE_DIRTY, позволяющую удалять кеш с заданным ключом:

REPLACE INTO profile ('first_name') VALUES ('Monkey') WHERE 'user_id'='jsobel' MEMCACHE_DIRTY 'jsobel:first_name'

А вот здесь показано решение с использованием триггеров.

Меня заинтересовали эти методики возможностью реализации ее в ORM (Propel), т.к. отслеживание актуальности кеша и его чистка в необходимых местах — это рутинная работа, в модели это наверняка можно описать, тем самым снимая это пласт работ с плеч разработчика. Я в данном случае говорю о кешировании данных, а не результирующего html.

Буду рад услышать мнения по этому поводу..

2 Comments_2

Не очень понятно зачем в SQL запросе обращение к memcache? Или они его парсят до выполнения?
Здесь нужно учесть то, что этот финт использует Facebook, у которого 2 датацентра на 2-х побережьях. При изменении данных на одном, на другой через некоторое время отсылается лог изменений MySQL в виде таких вот sql-запросов, которые при выполнении заодно почистят старых кеш в другом датацентре.
Оставить comment
Показать другие цифры

В тексте комментария можно использовать теги <b><i><u><s><sup><code><pre>.
Адреса сайтов автоматически становятся ссылками.

_