Memcached

Memcached представляет собой сервер, хранящий в оперативной памяти некоторые данные с заданным временем жизни. Доступ к данным осуществляется по ключу (имени). Вы можете думать о Memcached, как о хэш-таблице, хранящейся на сервере. Применяется он в основном для кэширования кода веб-страниц, результатов запросов к базе данных и тп.

Также ничто не мешает использовать Memcached в качестве «не очень надежного» key-value хранилища. Например, в нем можно хранить сессии пользователей, коды капч или счетчик посетителей, находящихся в данный момент на сайте.

Коротко о главном:

  • Умеет только key => value in memory
  • Вытеснение. Когда Memcache доходит до ограничения в памяти, он начинает удалять объекты по принципу LRU(Least Recently Used). Memcache постарается удалить прежде всего те данные, которые запрашивались очень давно (т.е. менее популярные удалит, а более популярные оставит).
  • Шардинг из коробки(достаточно просто добавлять сервера, вся работа будет инкапсулирована в него)
  • Максимальная длина ключа по умолчанию составляет 250 байт, а длина значения — 1 Мб;
  • Будьте осторожнее со спец-символами;
  • Ключи можно «расширить», воспользовавшись каким-нибудь MD5 или SHA512 (в этом случае нехэшированный ключ будет разумно продублировать в значении);
  • Если хочется хранить очень длинные значения, можно сжимать их и/или разбивать на части;
  • Весь ввод-вывод осуществляется с помощью libevent;
  • Для ускорения работы память выделяется при запуске демона и не освобождается до его остановки;
  • Для борьбы с фрагментацией памяти используется slab allocator;
  • Все операции являются атомарными, есть поддержка compare-and-swap;
  • С Memcached можно работать по UDP;
  • Помимо текстового протокола также существует бинарный;

Дополнительно: