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;
- Крім текстового протоколу також існує бінарний;