====== Memcached в Ubuntu ======
Джерело:
[[https://losst.pro/ustanovka-memcached-v-ubuntu|https://losst.pro/ustanovka-memcached-v-ubuntu]]
==== 1. Установка сервиса ====
Сама по себе установка Memcached не вызовет проблем. Вам достаточно выполнить такую команду:
''sudo apt install memcached libmemcached-tools''
[[https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-16-41-52.png|{{ https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-16-41-52-1024x576.png?nolink&806x453 }}]]
Вместе с самим сервисом мы устанавливаем набор дополнительных утилит для более простого управления Memcached. На этом установка завершена.
==== 2. Настройка Memcached ====
Настройка Memcached Ubuntu выполняется через файл /etc/memcahced.conf. В этом файле содержаться опции, которые будут переданы сервису при запуске:
* **-d** - работать в режиме сервиса;
* **-v** - режим более подробного вывода информации;
* **-vv** - ещё более подробный вывод информации;
* **-m** - количество оперативной памяти, которую будет использовать сервис, рекомендую увеличить этот параметр, так как значения 64 мегабайта, установленных по умолчанию, будет мало;
* **-p** - порт, на котором будет работать сервис;
* **-u** - пользователь, от имени которого запущен сервис;
* **-l** - IP-дрес, на котором Memcached будет ожидать соединения, лучше использовать 127.0.0.1, чтобы из внешней сети ни у кого не было доступа к вашим данным;
* **-с** - количество одновременных подключений;
* **-P** - путь к PID-файлу сервиса в файловой системе.
Таким образом, большинство опций можно оставить по умолчанию. Изменить нужно только объём оперативной памяти и IP-адрес.
[[https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-16-57-36.png|{{ https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-16-57-36-1024x576.png?nolink&806x453 }}]]
==== 3. Запуск сервиса ====
Даже если сервис был запущен по умолчанию, после изменения настроек его нужно перезапустить:
''sudo systemctl restart memcached''
[[https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-16-58-56.png|{{ https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-16-58-56-1024x576.png?nolink&806x453 }}]]
Можно ещё убедиться, что Memcached работает именно на том IP и порте, которые нам нужны:
''ss -tlpn''
[[https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-17-36-50.png|{{ https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-17-36-50-1024x576.png?nolink&806x453 }}]]
Затем вы можете посмотреть статистику использования сервиса командой:
''memcstat –servers="127.0.0.1"''
[[https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-17-01-04.png|{{ https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-17-01-04-1024x576.png?nolink&806x453 }}]]
Работать с Memcached мы можем уже сейчас. Для этого нужно использовать Telnet. Подключаемся к серверу:
''telnet localhost 11211''
Если подключение прошло успешно, вы увидите такое сообщение:
[[https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-17-13-00.png|{{ https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-17-13-00-1024x576.png?nolink&806x453 }}]]
Используйте команду stats, чтобы получить общую статистику, которую мы видели в выводе команды memcstat:
''stats''
[[https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-17-13-07.png|{{ https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-17-13-07-1024x576.png?nolink&806x453 }}]]
Для того, чтобы сохранить данные, используется команда add. У неё такой синтаксис:
** add
имя_ключа
флаги
время_хранения
размер_данных ** \\
**данные**
Флаги - это целое число, которое хранится вместе с данными, и вместе с ними возвращается пользователю, можно просто оставить 0. Время хранения - это время в секундах, сколько будут хранится эти данные, 0 означает вечно. Размер данных в байтах определяет, сколько памяти будет задействовано под эти данные. Далее нужно нажать Enter и ввести данные, которые нужно сохранить. Например, сохраним строку memcached в ключе key навсегда:
''add key 0 0 9 \\
memcached''
[[https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-17-16-16.png|{{ https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-17-16-16-1024x576.png?nolink&806x453 }}]]
Получить значение сохранённого ключа можно командой get:
''get key''
[[https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-17-29-00.png|{{ https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-17-29-00-1024x576.png?nolink&806x453 }}]]
А удалить этот ключ командой delete:
''delete key''
[[https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-17-29-09.png|{{ https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-17-29-09-1024x576.png?nolink&806x453 }}]]
А вот посмотреть список всех ключей в Telnet так просто не получится. Сначала нужно посмотреть список хранилищ:
''stats items''
[[https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-17-28-28.png|{{ https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-17-28-28-1024x576.png?nolink&806x453 }}]]
А затем командой stats cachedump можно вывести список ключей хранилища. Первый параметр - это идентификатор хранилища, а второй - лимит ключей для вывода:
''stats cachedump 1 100''
[[https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-17-28-49.png|{{ https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-17-28-49-1024x576.png?nolink&806x453 }}]]
Для выхода наберите команду **quit**. С помощью команды memcdump вы можете вывести список всех сохраненных ключей:
''memdump –servers=127.0.0.1''
[[https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-17-30-19.png|{{ https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-17-30-19-1024x576.png?nolink&806x453 }}]]
А с помощью memccat можно вывести значение нужного ключа:
''memccat key –servers=127.0.0.1''
[[https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-17-30-47.png|{{ https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-17-30-47-1024x576.png?nolink&806x453 }}]]
Но все эти возможности используются только для отладки. Для реального хранения данных используются клиенты memcached для разных языков программирования. Их очень просто установить. Давайте рассмотрим это на примере Php.
==== 4. Настройка Memcached и Php ====
Давайте рассмотрим настройку библиотеки Memcached для Php. Чтобы её установить, выполните:
''sudo apt install php-memcached''
[[https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-17-43-25.png|{{ https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-17-43-25-1024x576.png?nolink&806x453 }}]]
Затем перезапустите apache, если хотите использовать модуль на веб-сервере:
''sudo systemctl restart apache2''
Далее вы можете убедится, что модуль активирован, вызвав функцию phpinfo():
''''
[[https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-17-47-15.png|{{ https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-17-47-15-1024x576.png?nolink&806x453 }}]]
===== Выводы =====
В этой статье мы разобрали, как выполняется установка Memcached Ubuntu, а также как использовать этот сервис для кэширования данных из командной строки или в PHP. Не забудьте убедиться, что сервис слушает подключения только на локальном IP- адресе, поскольку здесь нет аутентификации, и к вашим данным смогут получить доступ другие пользователи. Также это может быть небезопасным из-за того, что в Memcached были найдены уязвимости, которые позволяют осуществлять атаку типа отказ в обслуживании.