Учимся работать с Redis в PHP.

5 Март 2010 // Уроки PHP

У многих разработчиков highload веб-сервисов возникало желание отказаться от memcashed в связке с Mysql. Да и от MYSQL отказаться было бы тоже не плохо. Но как можно отказаться от Mysql скажете вы где тогда хранить данные? Встречайте, Redis – высокопроизводительное нереляционное распределённое хранилище данных. В отличие от memcashed вы не потеряете свои данные, Redis хранит свои данные постоянно. Так что не надо будет парится по поводу непредвиденных ситуаций. Redis позволяет хранить как строки, так и массивы, к которым можно применять атомарные операции pop / push, делать выборки из таких массивов, выполнять сортировку элементов, получать объединения и пересечения массивов.

Производительность базы данных Redis поражает разработчика веб-приложений. Только представьте себе 110000 set запросов и 81000 get запросов в секунду.  Redis сегодня уже используется многими крупными компаниями. Как думаете какими? Ну конечно же – это крупные социальные сети и микроблоги, точные имена компаний я не буду называть дабы не ошибиться, но скажу что Вконтакте и Twitter точно используют нереляционную базу данных, ибо если бы было что-то другое, то все бы повисло к чертям собачьим.

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

Это была лирика или рассказ о том что такое Redis и почему его стоит изучать. А теперь давайте опробуем работу Redis у себя на компьютере.

1. Установка Redis.

Я был опечален, когда узнал что Redis официально есть только под Linux. Но найти скомпилированный Redis под Windows мне все же удалось. Ура, товарсчи!

Установка проста. Достаем содержимое из архива куда-нибудь себе на диск и запускаем redis-server.exe Там есть еще два екзешника, один для проверки производительности, другой – клиент. Они нам не нужны. Внимание! После того как вы запустите redis-server не закрывайте окошечко консоли, иначе сервер редиса тоже выключится.

2. Запускаем уже установленный, любимый Денвер.

3. Для работы с Redis нам понадобится клиент на php. Я остановил свой выбор на php-redis. Клиент будет необходим для соединения с базой данных и записи и чтения данных из нее.

4. Устанавливаем клиент. Скачиваем архив. Папку php-redis вытаскиваем в localhost1/www/.  Проводим тест на работу с редиской=)  Запускаем тест http://localhost1/php-redis/tests/unit.all.php

Scalar tests ………. Increment/Decrement ……. Lists ……… Test summary Passed: 26 Failed: 0 Insert tests ……. Delete tests . Update tests …… Test summary Passed: 40 Failed: 0 Adding, reading ……………. Filtering ……………. Deleting …. Truncating …. Test summary Passed: 80 Failed: 0

ЙУХУ! Работает=)

5. Теперь давайте подключимся к редис и запишем что-нибудь и прочитаем. Создадим в корне(localhost1/www/) index.php куда разместим следующий код:


<?

$root=$_SERVER['DOCUMENT_ROOT'].'/php-redis/lib/';
//подгружаем необходимые классы для работы с редисом
require_once $root.'redis.php';
//подключаемся к редису
$r = new php_redis( '127.0.0.1', 6379 );
//Записываем в ячейку test привет редис)))
$r->set('test','Hello REDIS!');

//Получаем запись по keyvalue = test
$v = $r->get('test');

//выводим результат

echo $v;

?>

Теперь осталось запустить http://localhost1/

Видим Hello REDIS! Ура, получилось. Удалить запись можно с помощью метода delete();. Обновить значение можно с помощью update();

Для того, чтобы убедится сохранился ли наш “Привет” давайте закомментируем $r->set(‘test’,'Hello REDIS!’); и сохраним. Все работает запись выводиться. Теперь давайте перед $v = $r->get(‘test’); поставим $r->delete(‘test’); Вот теперь-то запись по ключу удалена.

На этом наше первое знакомство с Redis, к сожалению, подошло к концу. Надеюсь и у Вас все получится как у меня.

Файлы к статье.

Google Bookmarks Digg Reddit del.icio.us Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru Mister Wong

Комментариев к записи: 7

  1. Андрей пишет:

    А как я понимаю особо сложных выборок сделать не получится? например как в БД связь двух таблиц по id, ну и в этом духе.
    И вобще как я понимаю доступны все операции которые можно делать с массивами в PHP, так?

  2. admin пишет:

    Как я понимаю в редиске нет таблиц, т.к. все данные хранятся по ключу. Насчет выборок еще не знаю, не задавался этим вопросом, надо посмотреть – интересный вопрос.

  3. Flamma пишет:

    А где нашли Redis под Windows?

  4. admin пишет:

    Лазил по инету и нашел. Там внизу ссылка на все файлы для работы с redis из под винды.

  5. Александр пишет:

    Искренне благодарен, как раз хочу расширить область знаний по Редису.
    Для тех кто не понимает как же всё таки работать с Редисом, есть отличная статья… щас поищу…

    ААА, вот оно где
    http://mind3.ru/2c2cdf/CkdNSFwYG1lbBF4JDlBXFwpFBB9EDUYXUAMO/, да , и вот еще мега статейка, миниТвиттер с Редисом
    http://mind3.ru/2c2cdf/CkdNSFwYG0FLC1dLE0QcTgxcCh9dDFEGHBxHWxZeEAsWX1wFNFJQWEFZQhIIRUdcFw==/

  6. Александр пишет:

    Сайт в фавор ) Молодец Андрюха. Информативный блог

  7. Илья пишет:

    Ну писать статью, основываясь на одной статье хабрахабра как минимум глупо. Запускать под виндой – извращение. И показать простой сет – гет слишком мало. Ожидал большего.

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