Что такое Memcached — Основы работы с NoSQL хранилище данных

Что такое Memcached — Основы работы с NoSQL хранилище данных
5 (100%) 3 votes

Memcached — это высокопроизводительная программное обеспечение, который предназначен для кэширование объектов в оперативной памяти на основе хеш-таблицы. Проще говоря, Memcached — это NoSQL хранилище данных, а данные хранятся в оперативной памяти по принципу key-value (ключ/значение).

Данная система изначально разработали инженеры / разработчики компании Danga Interactive для LiveJournal. Но после этого данная система была выпущена как открыть проект и его начали использовать такие гиганты, как Wikipedia, YouTube, Facebook…

Memcached отличается от других хранилищ данных фантастическими характеристиками производительности. Это за счет того, что данная система не использует жесткий диск, вместо этого он хранит данные только в оперативной памяти компьютера / сервера. Но у такой системы ест и недостатки:

  • Ограниченный объем данных
  • Надежность хранение данных

 

Так как мы храним данные в оперативной памяти, то из за сбоя системы, перезагрузки сервера или просто заполнение данных мы потеряем данные из хранилища. Но ест много задач, где его можно использовать, где не критично потеря данных, например, для кэширование сайта. То есть, у нас имеется основная база, где хранятся все данные, и есть данные, которые часто запрашиваются пользователями. Мы можем эти данные сохранить в оперативной памяти и оттуда отдавать пользователей. Это ускорить работу и снизить нагрузку на основную базу. Но если по данные были удалены с временной хранилища, то мы можем опять индексировать. Это одно из множество задач, где данная система применяется.

Кроме Memcached есть еще одна примерно такая система хранилища данных. Он тоже все данные хранить в оперативной памяти, и он тоже NoSQL база. Но кроме того, что он все данные хранить в операционной системе, он время от времени данные записывает на жесткий диск, и если данные были удалены с оперативной памяти, он автоматический восстановить из жесткого диска (Все этого настраивается как вам угодно). Это Redis, и у меня есть несколько статей по Redis:

 

Memcached реализует базовый необходимый минимум функции хранилища данных:

  • Соединение с сервером
  • Добавление, удаление и обновление объекта
  • Получение значение объекта
  • Инкремент, декремент и еще пара других операции.

 

Основы работы с Memcached




Давайте немного подробнее рассмотрим данную систему. После соединение клиента с хранилищем данных, клиенту будут доступны следующие команды:

  • set — установить ключу объект в качестве значение,
  • add — добавить кэш-пару ключ/объект (это тоже самое, что и set, но будет выполняться, если в системе такого ключа не было),
  • replace — поменять значение ключа,
  • get — получить из хранилища объект по указанному ключу,
  • delete — удалить ключ и значение по указанному ключу.

 

Это нам напоминает стандартные SQL операции — INSERT, UPDATE, DELETE. Кроме этих операций, есть дополнительные, значение которых трудно переоценить.

  • cas — установить ключу объект в качестве значение, в том случае, если он не был изменен с момента последней операции чтения. Cas (check and set) — это аналог транзакции,
  • gets — делает то, что и get, но получает дополнительные данные — версию пары ключ-значения,
  • incr / decr — инкремент и декремент. Увеличение или уменьшение значение ключа на единицу,
  • append / prepend — добавление значение в конец и начало строгого значение ключа.

 

Имея данные команды на руках мы можем в Memcached реализовать довольные сложные структуры.

Memcached реализован в качестве демона (daemon), который слушает TCP-порт — по умолчанию это 11211. Мы можем работать с ним напрямую, но это немного сложно, поэтому для большинства языков программирования давно созданы библиотеки, которые, кроме удобства добавляют дополнительный функционал. В следующем уроке мы будем работать с Memcached из Node.js, посмотрим какие модули / библиотеки есть для этой цели, какой функционал он представляет и напишем небольшое приложение.

Весь список уроков Node.js вы можете найти на этом странице.


Об авторе

Занимаюсь программированием уже более 7 лет. Часто использую JavaScript (Node.js) и Python.

Комментарии