RFC (Request for Comments, Запрос на комментарии) - серия документов, публикуемая сообществом исследователей и разработчиков, руководствующихся практическими интересами, в которой описывается набор протоколов и обобщается опыт функционирования Интернет.
MemcacheQ это система очередей сообщений, основанная на коде базы данных MemcacheDB, которая в свою очередь основана на коде memcached. Соответственно MemcacheQ использует тот же протокол что и Memcached (точнее только две команды из него - get и set), а значит для работы с ним не требуется дополнительных модулей. Это позволяет при работе с ним пользоваться теми же преимуществами что и при использовании Memcached.
Например в PHP можно использовать модули pecl-memcache и pecl-memcached, и если PHP работает как FastCGI-процесс или как модуль веб-сервера (mod_php) можно использовать устойчивые соединения. Далее будет показано как можно установить MemcacheQ на сервер под управлением FreeBSD 8.2.
Инструкция по установке на официальной странице проекта полностью игнорирует какую либо систему управления пакетами и предлагает в ручную компилировать Berkley DB и MemcacheQ. Мы же попробуем написать свой порт, хотя исходные тексты MemcacheQ оформлены так чтобы максимально усложнить такую сборку.
Создадим на сервере директорию порта и перейдём в неё:
set D=/usr/ports/databases/memcacheq && mkdir -p $D{,/files} && cd $D && unset D
Желающие могут скачать весь порт одним архивом, который достаточно закачать на сервер и распаковать командой:
tar jxfv memcacheq-0.2.0-freebsd-port.tab.bz2 -C /
Закончив с файла порта установим сервис:
cd /usr/ports/databases/memcacheq && make install clean
Для запуска сервиса при старте системы добавим в файл /etc/rc.conf строку:
memcacheq_enable="YES"
И наконец запустим сервис:
/usr/local/etc/rc.d/memcacheq start
Теперь memcacheq запущен и слушает на портах 22201/tcp и 22201/udp и обращаться можно как к обычному memcached-серверу. Поддерживаются только команду get и set. Команда get вычитывает следующее значение из именованной очереди, а set - добавляет значение в именованную очередь. Параметр ttl у команды set игнонируется.
Пример практического применения memcacheq мы приведём в одной из следующих статей, а пока всё. Приятной работы!