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

Простой пример использования 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);

Напоследок хочу заметить, что помимо использования мемкеша, старайтесь всегда минимизировать количество запросов к базе данных, а также делать их как можно «легче».

Рассказать друзьям:


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*