![Rediska](https://habrastorage.org/getpro/habr/post_images/11b/a37/36d/11ba3736d683940832438e652e89b069.png)
Что нового в Redis 1.2.1
- Sorted sets — упорядоченные коллекции («сеты»). Для каждого элемента хранится индекс (score) по которому «сет» и сортируется.
- MSET и MSETNX — установка нескольких значений одной командой.
- SRANDMEMBER — возвращает случайный элемент из «сета».
- RPOPLPUSH — возвращает последний элмент из списка и вставляет в начало другого.
- Новые атрирбуты для комманды SORT
- Append Only File — новый метод сохранения данных на диск.
- Новый binary safe протокол
- Новая политика хранения integer значений приводящая к приличной экономии памяти (30% для базы с большим количеством integer значений).
- Поддержка Solaris.
- Исправления ошибок и оптимизация производительности.
Что нового в Rediska 0.3.0
- Полная поддержка Redis 1.2.1 API
- Pipelining — быстрая отправка серии команд на сервер.
- Выполнение команды на заданном сервере.
- Настройка индекса базы в конфигурации сервера.
- Простое и удобное расширение Редиски — добавление, удаление и замена команд.
- Lazy loading («Ленивая загрузка») — загрузка функцинала Редиски по требованию.
- Исчерпывающая документация.
Примеры работы на дисерт
Создаем ключ на 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 — открытый проект: вы можете поучаствовать в разработке или стать автором интеграции с любимым фреймворком. Контакты авторов вы найдете на сайте проекта.