Учимся работать с 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, к сожалению, подошло к концу. Надеюсь и у Вас все получится как у меня.




А как я понимаю особо сложных выборок сделать не получится? например как в БД связь двух таблиц по id, ну и в этом духе.
И вобще как я понимаю доступны все операции которые можно делать с массивами в PHP, так?
Как я понимаю в редиске нет таблиц, т.к. все данные хранятся по ключу. Насчет выборок еще не знаю, не задавался этим вопросом, надо посмотреть – интересный вопрос.
А где нашли Redis под Windows?
Лазил по инету и нашел. Там внизу ссылка на все файлы для работы с redis из под винды.
Искренне благодарен, как раз хочу расширить область знаний по Редису.
Для тех кто не понимает как же всё таки работать с Редисом, есть отличная статья… щас поищу…
ААА, вот оно где
http://mind3.ru/2c2cdf/CkdNSFwYG1lbBF4JDlBXFwpFBB9EDUYXUAMO/, да , и вот еще мега статейка, миниТвиттер с Редисом
http://mind3.ru/2c2cdf/CkdNSFwYG0FLC1dLE0QcTgxcCh9dDFEGHBxHWxZeEAsWX1wFNFJQWEFZQhIIRUdcFw==/
Сайт в фавор ) Молодец Андрюха. Информативный блог
Ну писать статью, основываясь на одной статье хабрахабра как минимум глупо. Запускать под виндой – извращение. И показать простой сет – гет слишком мало. Ожидал большего.