Pull to refresh

Обновились Redis 1.2.1 и PHP клиент Rediska 0.3.0

Reading time 3 min
Views 2.4K
RediskaRedis — это очень быстрая key-value база данных. Может использоваться как memcached, но отличие от последней в том, что Redis сохраняет свои данные на диск, то есть может быть использован для хранения данных (что мы успешно и делаем). Основные отличии от других собратьев — более сложные структуры данных (списки, коллекции) и атомарные операции с ними. Читайте более подробный обзор Redis на Хабре.


Что нового в 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

Подробнее о Редиске вы можете прочитать на официальном сайте или в обзоре на Хабре.

Примеры работы на дисерт


Создаем ключ на 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 — открытый проект: вы можете поучаствовать в разработке или стать автором интеграции с любимым фреймворком. Контакты авторов вы найдете на сайте проекта.
Tags:
Hubs:
+36
Comments 29
Comments Comments 29

Articles