Установка Memcached на Ubuntu Server 18.04

Memcache — это программа, которая позволяет временно хранить (кэшировать) данные в оперативной памяти на основе хеш-таблиц. При поступлении запроса, memcache проверит наличие данных в оперативной памяти, если данных в кэше нет, будет произведен запрос к базе данных. При последующем запросе тех же данных ответ будет выдан из оперативной памяти Memcache. Это позволит нам значительно ускорить работу сервера, т.к. данные будут отдаваться из оперативной памяти, а не из базы данных.

Установка Memcached и компонентов

Все компоненты доступны в официальном репозитории Ubuntu

Нам потребуется установить  Memcached и необходимые зависимости, сервер баз данных MySQL и PHP с компонентами для взаимодействия.

Установка Memcached

sudo apt install memcached libmemcached-dev

По дефолту Memcached прослушивает порт — 11211, на localhost(127.0.0.1). Файл настроек Memcached расположен /etc/memcached.conf

  • logfile /var/log/memcached.log — задается расположение лог файла
  • -m — задает размер памяти под кеш (в мегабайтах)
  • -p — задается порт, который слушает Memcached
  • -l — задается IP адрес, который слушает Memcached

Установка необходимых компонентов

sudo apt update && sudo apt install mysql-server mysql-client php-mysql php php-memcached

Стоит обратить внимание. Есть два компонента для PHP Memcache, один php-memcache, а другой php-memcached. Мы будем использовать php-memcached, т.к. он более стабилен и реализует больше возможностей.

Теперь давайте проверим, как это работает
Сделаем запрос к PHP, что он знает о Memcached и включен ли он.

Создаем файл info.php в корневом разделе по умолчанию. /var/www/html/

sudo nano /var/www/html/info.php

С содержимым:

<?php
phpinfo();
?>

Сохраняем файл ctrl+o и выходим ctrl+x

Теперь посмотрим информацию в браузере. Для этого переходим по адресу:

http://IP_сервера/info.php

должны получить вот такое:

Memcached включен и найден на сервере.

Так же можно проверить, запущена ли служба Memcached

sudo netstat -tap | grep memcached

Вывод должен быть следующий:

tcp  0  0 localhost.localdo:11211 0.0.0.0:*  LISTEN   5971/memcached

Как проверить работу Memcached

Создадим в корне сайта файл test.php и запишем туда следующий код:

<?php
 Создаем объект для работы с Memcached
 $memcached = new Memcached ();
 #Подключаемся к нашему серверу, можно добавить несколько серверов. В нашем примере добавляем один и работать будем с одним
 $memcached->addServer("localhost", 11211);
# Для добавления записи используется 3 процедуры add() set() и replace() # add() - добавлет новую запись, в случае если запись с таким ключом существует - вернет false 
# set() - устанавливает значение записи по ключу, на ее работу не влияет существует запись или нет 
# replace() - заменят значение существующие записи, если запись не существует - вернет false 
# Ниже примеры для добавления числа, строки, массива и объекта. Метод getResultMessage() возвращает сообщение с результатом выполнения 
echo  ($memcached->add("its_integer", rand(0, 100))) ? "Добавили число" : "Ошибка добавления числа ".$memcached->getResultMessage() ; 
echo '</br>'; 
echo  ($memcached->add("its_string", rand(100, 200))) ? "Добавили строку" : "Ошибка добавления строки ".$memcached->getResultMessage() ; echo '</br>'; 
echo  ($memcached->set("its_array", array("v1"=> rand(200, 1000), "v2"=> rand (1000, 1200)))) ? "Добавили массив" : "Ошибка добаления массива ".$memcached->getResultMessage();
echo '</br>';
echo "Данные, записанные в Memcached:\n"; var_dump($memcached->get("its_integer" ));
echo '<br>'; 
var_dump($memcached->get("its_string" ));
echo '<br>'; 
var_dump($memcached->get("its_array"));
echo '<br>'; 
$tmp_object->ноль = 0; 
$tmp_object->число = 123; 
$memcached->set("key", array($tmp_object, rand(0, 55))); 
echo "Записываем данные в кеш Memcached\n"; 
$get_result = $memcached->get('key'); 
echo "Данные, записанные в Memcached:\n"; 
var_dump($get_result); 
#Если раскоментировать строчку, то данные обновятся
//$memcached->flush (); 
$memcached->quit (); ?>

Теперь осталось проверить результаты: http://IP-servera/test.php

Если есть вопросы, то пишем в комментариях.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

0 0 vote
Article Rating
Подписаться
Уведомление о
guest

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

0 Комментарий
Inline Feedbacks
Просмотреть все комментарии