PHP

Простой пример использования memcached

В этой коротенькой статье, я хочу рассказать, что такое мемкеш и показать простой пример его использования.
Рано или поздно в веб-разработке приходиться сталкиваться с проектами, которые имеют довольно серьезную нагрузку – большое количество просмотров. Практически всегда, основная доля нагрузки связана с постоянным обращением к базе данных. В связи с этим могут возникать проблемы с работой проекта – сайт будет заметно медленнее работать, а иногда и вообще «падать». Для решения этой проблемы можно пойти несколькими путями. Первый простой, но финансово затратный – это купить более мощный сервер. И второй вариант – оптимизировать работу скриптов, тем самым снизив нагрузку.
«Жаба» подсказывает, что второй вариант более приемлемый. Именно его и попробуем разобрать. Как я уже и говорил – основная нагрузка случается из-за постоянного обращения к базе данных. Чтобы снизить количество запросов к базе можно воспользоваться замечательным инструментом – memcached – это программное обеспечение, реализующее кэширование данных в оперативной памяти. Работать напрямую с memcached в php нельзя, поэтому как связующая прослойка используются модуль – memcache.
С вариантом снижения нагрузки и способствующем в этом инструменте разобрались, остаётся только реализовать само кэширование – приведу пример кода, с подробными комментариями:
// подключение к мемкешу
$memcache = new Memcache;
$memcache->connect('localhost',11211); // подключение
$vRevision = 1; // ревизия кеша, пригодиться для принудительного сброса кеша
 
// пример использования     
$getResult = $memcache->get('key_'.$vRevision); // Проверяем наличие кеша, по ключу
if ($getResult) { // если кеш есть
    // то используем его
    $resultData = array();
    $resultData = $getResult;
}else{ // если кеша нет, то
    // делаем запрос к бд, для получения данных
    $sql = mysql_query("
        SELECT * FROM `users`
    ") or die(mysql_error());
    $resultData = array();
    while($r = mysql_fetch_array($sql, MYSQL_ASSOC)){
        $resultData = $r;
    }
    // записываем данные в мемкеш на сутки - 86400 секунд
    $memcache->set('key_'.$vRevision, $resultData, false, 86400);
}
 
// вывод данных
var_dump($resultData);

Напоследок хочу заметить, что помимо использования мемкеша, старайтесь всегда минимизировать количество запросов к базе данных, а также делать их как можно «легче».
Теги:
memcached
Добавлено: 10 Мая 2018 15:15:14 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...