Мастер-класс по 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 и предоставил статью о полном использовании кеша, так же выложил реально рабочие примеры без использование кучи всяких ненужных библиотек, для вашего сайта.


Рубрика: Информация » Программирование   |   Автор: kirill   |   Просмотры: 9492
Комментариев: 240
Публикаций: 6
ICQ: 573235722
- -896 +
  Автор: VELIK505   |   Группа: Программисты   |   Дата: 03 декабря 2011  
Погоди а конфиг Редиски самого мы же должны создать. Чтобы он запускался. Где он?

И как думаешь для хранения сессии подойдёт?

Сколько ты ему оперативы выделил для tuning-service.kz ? Все sql запросы по ключу в редис пульнул?
Комментариев: 60
Публикаций: 2
ICQ: 3374475
- 107 +
  Автор: FreeWolfAlex   |   Группа: Программисты   |   Дата: 03 декабря 2011  
что то я ничего сверх офигенного сайте tuning-service.kz не увидел по мне он как улитка загружается fellow

Memcached рулит smile пусть лучше перезаписывается
Комментариев: 64
Публикаций: 8
ICQ: 959098
- 82 +
  Автор: kirill   |   Группа: Программисты   |   Дата: 03 декабря 2011  
Цитата: FreeWolfAlex
что то я ничего сверх офигенного сайте tuning-service.kz не увидел по мне он как улитка загружается


Интернет свой проверь, генерация моментальная идет

Цитата: VELIK505
Погоди а конфиг Редиски самого мы же должны создать. Чтобы он запускался. Где он?

Он должен автоматом ставится

Цитата: VELIK505
И как думаешь для хранения сессии подойдёт?

Конечно

Цитата: VELIK505
Сколько ты ему оперативы выделил для tuning-service.kz ? Все sql запросы по ключу в редис пульнул?


100 метров тогда главная страница по колючем сидит, остальные не успел еще доделать)

Цитата: FreeWolfAlex
Memcached рулит пусть лучше перезаписывается

Гавно по сравнению с редисом
Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.