Перейти до основного вмісту

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