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;
- Помимо текстового протокола также существует бинарный;
Дополнительно: