Документация по ОС FreeBSD Суббота, 20.04.2024, 17:03
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Мои статьи [0]
Установка и настройка [281]
X Window [25]
Man pages [30]
Ports & Packages [26]
cvs [18]
Multimedia [20]
Нововсти в мире Unix [0]
RFC [4]
RFC (Request for Comments, Запрос на комментарии) - серия документов, публикуемая сообществом исследователей и разработчиков, руководствующихся практическими интересами, в которой описывается набор протоколов и обобщается опыт функционирования Интернет.
Безопасность [52]
Работа с железом [58]
Книги по FreeBSD [17]
Сеть [505]
Программирование [40]
FireWall [58]
Темы экзамена BSDA [14]
Официальные темы экзамена BSDA, включая подробноые описания и советы по обучению.

Главная » Статьи » Установка и настройка

Мemcached — это просто! [2012]
Memcached представляет собой сервер, хранящий в оперативной памяти некоторые данные с заданным временем жизни. Доступ к данным осуществляется по ключу (имени). Вы можете думать о Memcached, как о хэш-таблице, хранящейся на сервере. Применяется он в основном для кэширования (кода веб-страниц, результатов запросов к БД), хотя ничто не мешает также использовать Memcached в качестве «не очень надежного» key-value хранилища. 

Установка Memcached под FreeBSD
 
Memcached очень прост в установке и настройке. Например, чтобы поднять его под FreeBSD, достаточно выполнить следующие шаги. Ставим бинарный пакет с мемкэшом:
 
pkg_add -r memcached
 
В /etc/rc.conf пишем:
 
memcached_enable="YES"
memcached_flags="-l 127.0.0.1 -m 1024"
 
Флагами мы говорим Memcached использовать не более 1 Гб памяти, а также принимать соединения только от приложений, запущенных на локалхосте. Запускаем сервер:
 
/usr/local/etc/rc.d/memcached start
 
Готово!
 
Использование Memcached в скриптах на Perl
 
Для работы с мемкэшом из Perl нам потребуется модуль Cache::Memcached:
 
cpan -i Cache::Memcached

Дополнение: См также Cache::Memcached::XS. Спасибо @xomaa за подсказку.
 
Рассмотрим простейший скрипт:
 
#!/usr/bin/perl
 
# memcached-example.pl
# (c) Alexandr A Alexeev 2012 | http://eax.me/
 
use Mojo::Base -strict;
use Cache::Memcached;
 
# если указать несколько серверов, данные будут распределяться
# между ними в зависимости от хэша ключа
my $cache = Cache::Memcached->new(servers => ['127.0.0.1:11211']);
 
# присваиваем example_key значение 123
# (время жизни - 2 часа или меньше, если кончится память)
$cache->set('example_key', 123, 60*60*2);
# увеличиваем значение example_key на 5
$cache->incr('example_key', 5);
# считываем значение example_key
my $val = $cache->get('example_key');
 
say "val = $val"; 

Запускаем скрипт:
 
./memcached.pl
val = 128

Помимо чисел также можно хранить строки. Для хранения более сложных объектов требуется сериализация. Например, для сохранения массивов и хэшей можно воспользоваться модулем JSON::XS.
 
Текстовый протокол Memcached
 
Протокол, используемый Memcached, прост до безобразия:
 
$ telnet localhost 11211
 Trying 127.0.0.1...
 Connected to localhost.
 Escape character is '^]'.
 version
 VERSION 1.4.10
 get example_key
 VALUE example_key 0 3
 128
 END
 decr example_key 3
 125
 delete example_key
 DELETED
 flush_all
 OK
 quit
 
Протокол Memcahced используется во многих приложениях помимо самого мемкэша. Например, через тот же модуль Cache::Memcached можно работать с MemcacheQ, MemcacheDB, а также Tarantool/Box. Но это — темы для отдельных заметок.
 
Коротко о главном
 
В отношении Memcached справедливы следующие утверждения:
  • Все данные хранятся в памяти для ускорения чтения-записи (не забудьте отключить swap!);
  • Максимальная длина ключа по умолчанию составляет 250 байт, а длина значения — 1 Мб;
  • Ключи можно «расширить», воспользовавшись каким-нибудь MD5 или SHA512 (в этом случае нехэшированный ключ будет разумно продублировать в значении);
  • Если хочется хранить очень длинные значения, можно сжимать их и/или разбивать на части;
  • Memcached использует алгоритм кэширования LRU;
  • Весь ввод-вывод осуществляется с помощью libevent;
  • Для ускорения работы память выделяется при запуске демона и не освобождается до его остановки;
  • Для борьбы с фрагментацией памяти используется slab allocator;
  • Все операции являются атомарными, есть поддержка compare-and-swap;
  • С Memcached можно работать по UDP;
  • Помимо текстового протокола также существует бинарный;
  • Написан на Си, распространяется под лицензией BSD; 
Как обычно, вопросы и указания на неточности приветствуются.


Источник: http://eax.me/memcached/
Категория: Установка и настройка | Добавил: oleg (07.02.2012) | Автор: eax
Просмотров: 1282 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2024