Rediska — удобный PHP клиент для Redis
Rediska - удобный PHP клиент c внушительным списком возможностей для key-value базы Redis.
Основные возможности
- Полная поддержка Redis 1.2.1 API. Список обновлений, доступный в новой версии.
- Работа с несколькими серверами
- Несколько алгоритмов “размазывания” ключей по серверам: “consistent hashing” и crc32. Причем подключить свой не составит труда.
- Работа с ключами как с объектами
- Работа с списками и “сетами”, как с обычными PHP массивами
- Pipelining - быстрая отправка серии команд на сервер.
- Простое и удобное расширение Редиски - добавление, удаление и замена команд.
- Lazy loading (”Ленивая загрузка”) - загрузка функцинала Редиски по требованию.
- Полная интеграция с Zend Framework
- Исчерпывающая документация.
Скоро
- Теги - получения списка и удаление ключей по тегу.
- Поддержка Ketama - быстрой consistent hashing библиотеки.
- Оптимизация производительности.
- Интеграция с другими фреймворками.
- Учебное приложение - реальное приложение написанное с использованием Rediska с подробными комментариями.
Примеры работы
Создаем ключ на 2 минуты и сохраняем значение, если пусто:
<?php
// инциализация ключа
require_once 'Rediska/Key.php';
$key = new Rediska_Key('keyName', 60 * 2);
// старый способ
$value = $key->getValue();
if ($value === null) {
$value = $exampleObject->getNewValue();
$key->setValue($value);
}
// новый способ
$value = $key->getOrSetValue($exampleObject)->getNewValue();
?>
Работаем со списком:
<?php
// инициализация списка
require_once 'Rediska/Key/List.php';
$list = new Rediska_Key_List('list');
// добавляем новые элементы
$list[] = 'first element';
$list[] = 'second element';
// получаем элемент
echo $list[1]; #=> 'second element';
// Заменяем элемент
$list[0] = 'new first element';
// Получаем количество элментов
echo count($list); #=> 2
// Проверяем установлен ли элемент с указанным индексом
echo isset($list[0]); #=> true
// Итерация списка
foreach($list as $element) {
echo $element;
}
?>
Работа с “пайплайнами” и выполнение команд на указанном сервере:
<?php
// инициализация
$options = array(
'namespace' => 'MyApplication_',
'servers' => array(
'exapmleAlias' => array('host' => '127.0.0.1'),
array('host' => '127.0.0.1', 'port' => 6380)
)
);
require_once 'Rediska.php';
$rediska = new Rediska($options);
// создать ключ на сервере "exampleAlias"
$rediska->on('exampleAlias')->set('a', 'b');
// выполяем серию команд в "пайплайне"
$result = $rediska->pipeline()->set('a', 1)
->increment('a', 10)
->rename('a', 'b')
->get('a')
->execute(); // выполнить команды и вернуть ответы
?>
Более подробную информацию и примеры читайте в документации.
Rediska - открытый проект: вы можете поучаствовать в разработке или стать автором интеграции с любимым фреймворком. Контакты авторов вы найдете на сайте проекта.
За обзорную статью большое спасибо Ивану Шумкову - создателю клиента Rediska.


rediska растет и раздувается - это может влиять на производительность. интересно сравнить ее с, например, реализаицей ввиде php-либы (http://github.com/owlient/phpredis)(общаться с сокетами на уровне С наверно же быстрее, чем на уровне PHP)
Наверное. Если вам нужен просто set и get, то я думаю, что это лучший для вас выбор.
Подскажите где скачать redis для win.