Мастер-класс по Redis Cache от Кирилла

В данной статье я рассажу вам, как поставить самый крутой Redis Cache из всех имеющихся на любой сайт.Что такое Redis?
Redis — это высокопроизводительное нереляционное распределённое хранилище данных. В отличие от Memcached, который может в любой момент удалить ваши данные, вытесняя старые записи новыми, Redis хранит информацию постоянно, таким образом он похож на MemcacheDB.

Чем Redis отличается от существующих решений?
API для работы с Memcached (MemcacheDB) позволяет хранить массивы, но эти массивы будут сериализованы и сохранены как строки, таким образом атомарные операции над такими массивами не возможны.

Redis позволяет хранить как строки, так и массивы, к которым можно применять атомарные операции pop / push, делать выборки из таких массивов, выполнять сортировку элементов, получать объединения и пересечения массивов.

Производительность.
110000 запросов SET в секунду, 81000 запросов GET в секунду на Linux-сервере начального уровня. Высокая скорость работы Redis обеспечивается тем, что данные хранятся в оперативной памяти и сохраняются на диск либо через равные промежутки времени, либо при превышении определённого количества не сохранённых запросов. Из этого вытекает, что используя Redis, вы можете потерять результаты нескольких последних запросов, что вполне приемлимо для большинства веб-приложений, учитывая, что обращение к Redis по скорости сравнимо с обращением к оперативной памяти. Тем не менее, потерь можно избежать через избыточность — Redis поддерживает неблокирующую master-slave репликацию.

Shardingэ
Redis, как и Memcached, может работать как распределённое хранилище на многих физических серверах. Такой функционал реализуется в клиентских библиотеках, и к сожалению, из коробки этот функционал реализован пока только в Ruby API, однако это не мешает вам хешировать ключ самостоятельно и получать ид сервера, к которому с этим ключом обращатьсяэ

В общих чертах рассказал вам о кеше, приступим к установке и настройки Redis.

Для начала нам необходимо:
1. Сервер с доступом SSH.
2. Прямые руки.

Открываем, допустим, Putty авторизуется и начинаем устанавливать Redis (установка на FreeBSD 8.0):

cd /usr/ports/databases/redis/ && make install clean


Запуск нашего демона:

/usr/local/etc/rc.d/redis start


Если по каким то причинам наш Redis не запускается, тогда переустановим его:

cd /usr/ports/databases/redis/ && make deinstall


После установки и запуска демона Redis начинаем внедрять его в наш скрипт. Для начала внедрения нам надо его запустить на порте, а делаем это так:

$db = 0;
$redis = new Redis();
$redis->connect('ИП АДРЕС СЕРВЕРА', 6379);
$redis->auth('Пароль От баз данных');
$redis->select($db);


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

Идем далее, теперь нам надо заключить полученный вариант в ключ хранениея редиски, а делаем это таким простым способом. Запись одного значения в ОЗУ:

$redis->set('x', 'Ааа меня засунули в Озушку');


Запись нескольких значений одним ключом в ОЗУ:

$redis->mset(array('x' => 'Ну вот снова записали в ОЗУ', 'xx' => 'Хнык — Хнык'));


— Название ключа первичного варианта составил у нас X.
— Название вторичной записи ключа составляет у нас, первый ключ Х, второй ключ ХХ.

Ну вот мы разобрались, как записать наш вывод из базы данных в ОЗУ.иТеперь нам надо вывести значение / ключ, который мы записали, а делаем это так:

$KEY_x = $redis->get('x');
echo $KEY_x;


Данный пример выводит наш первичный ключ, который мы записали в первом варианте. Для вывода второго варианта нам потребуется сделать примерно так, чтобы вывести все значения ключей записанных во втором варианте:

$KEY_x = $redis->get('x');
$KEY_xx = $redis->get('xx');
echo $KEY_x;
echo $KEY_xx;


Теперь мы вывели 2 наших ключа записанных в ОЗУ.

И на десерт, так же мы может удалить наши записанный ключики таким способом:

$redis->delete('x');


В данном случае он удаляет первичный ключ, записанный нами в первом варианте.

Для удаление ключей записанных во втором варианте нам необходимо сделать так:

$redis->delete('x');
$redis->delete('xx');


И все все наши ключики были успешно удалены.

P.S. Если хотите посмотреть сколько ключей в ОЗУ, используйте данный код:

echo "Ключей в базе ".$redis->dbSize();


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

Автор публикации

не в сети 14 лет

kirill

Комментарии: 0Публикации: 8Регистрация: 05-04-2011

Понравилась статья? Поделись в соц. сетях:

Похожие новости

Отправить комментарий

wpDiscuz
Авторизация
*
*
Регистрация
*
*
*
Генерация пароля