Pull to refresh

Comments 23

UFO just landed and posted this here
Интересно написано. Буду ждать продолжение…
За проделанную работу — спасибо.
Зачётные для убивания глаз :)
спасибо за такую статью… только вот не ясно, а разве в питоне нет какой то стандратной библиотеки которая реализует методы memcached такие как add increment del и тп?
В Python есть несколько расширений, которые обеспечивают интерфейс memcached, но пост совсем не об этом, здесь Python используется скорее как псевдокод, это может быть любой другой язык программирования и любая библиотека доступа к memcached, например, с асинхронной семантикой.
А то что memcached может в любой момент времени затереть ваши данные (ведь это не БД и он не обязан хранить данные) это не мешает реализации данных подходом? Или я что-то путаю?
Это зависит от ситуации, для каких-то данных это допустимо, для других — нет. Есть возможность хранения с избыточностью в memcached, и другие решения. Есть MemcacheDB, он данные не потеряет.
ИМХО, стоит все эти рецепты где-то в одном месте сложить. Не только реализации на конкретных языках, но и общие алгоритмы.
Какие есть предложения? Если такая статья не лучшее место?
Какая нибудь вики, с отдельными страницами на каждый рецепт, диаграммами последовательностей, и прочими облегчающими понимание штуками. Эдакий Memcache cookbook.
Если кто-нибудь создаст и наполнит контентом, был бы рад помочь! Есть волонтеры?
Постараюсь сегодня-завтра сделать. Давно хочу где-нибудь разместить всякие очереди и стеки, на memcached
Хорошая статья, спасибо :) С удовольствием прочту продолжение.
А корректное ли это использование кэш-сервера?

Насколько я его понимаю, он создается для простых операций типа get/set, а когда начинается изобретение колеса, то не проще ли глянуть в обычные СУБД, но например с pconnect`ом и in memory tables?
Нет, совсем нет. Современная реляционная СУБД не умеет масштабироваться нормально (с точки зрения нагруженного web-приложения и т.п. задач). Она обладает огромным количеством накладных расходов (от парсинга SQL до ACID-совместимости).

Вариант с memcached будет на порядки быстрее, если он применим. Да и используется он очень-очень часто.
memcachedb — это БД Berkeley DB (http://ru.wikipedia.org/wiki/BDB) + интерфейс работы аналогичный memcache. Так что это совсем не кеш-сервер.

Кстати BDB сейчас компания Оракл поддерживает.

Сама база умеет хранить ключ и его значение (аналогично тому что мы обычно временно сохраняем в memcache).

На прошлой неделе тестировали для своего проекта, запись и извлечение миллионов записей в BDB (используя memcachedb) — работает очень быстро ) у нас он записывал со скоростью 9-17 тыс. записей в секунду.
memcached — это не кэш-сервер. Вместе с MemcacheDB (в начале статьи причины почему они рассматриваются вместе) они являются частью поколения БД с интерфейсом ключ-значение. Семантика, масштабируемость, скорость работы и т.п. могут быть различными, но они хранят всегда огромный «хэш».

Отличие memcached от MemcacheDB — только в способе хранения значений, не более. А на практике у меня экземпляры memcached живут по полгода и больше — это превышает на порядок срок хранения структур данных в нем. А для всего остального есть MemcacheDB.
> В первом случае надо лишь правильно обслуживать memcached — памяти должно хватать для счетчиков, иначе мы начинаем терять значения

$ memcached -h | grep memory
-m max memory to use for items in megabytes, default is 64 MB
-M return error on memory exhausted (rather than removing items)
Например, так, или мониторинг занятости места в memcached, распределения slabов и т.п. Согласен ;)
Даешь примеры на самом распространенном языке веба =)
Если речь о PHP, то он менее читабелен и выразителен для моих целей в данной статье. Хотелось бы, чтобы примеры были понятны как можно более широкому кругу разработчиков, в том числе и незнакомым с Python.
Sign up to leave a comment.

Articles