Создал: Сергей Савельев
Создана: 12.12.2014 16:13
Редактировал: Сергей Савельев
Редактирована: 12.12.2014 18:01
Источник: pixelcom.crimea.ua/redi...
Статус: Редактируемая

Predis

Установка Redis

Redis прост в установке, а также краткие инструкции по установке публикуются на странице загрузки. Из собственного опыта автора перевода официального текста статьи, если работаете в Ubuntu, то выводится сообщение об ошибке, если не установлен TCL.

sudo apt-get install TCL redis-server
sudo /etc/init.d/redis-server start
git clone git://github.com/nrk/predis.git

Это в том случае, если установлен git, если нет то, 100%, нужно это сделать:

sudo apt-get install git

Для проверки необходимо создать файл, например test.php, со следующим содержанием:

 "tcp",
        "host" => "127.0.0.1",
        "port" => 6379));
*/
    echo "Успешное подключение Redis";
}
catch (Exception $e) {
    echo "Нет соединения с Redis";
    echo $e->getMessage();
}
?>

Когда вы запустите его, вы должны увидеть сообщение «Успешное подключение Redis».

Использование Redis

SET, GET, и EXISTS

Наиболее важные команды, используемые с Redis это SET, GET, и EXISTS. Вы можете использовать эти команды для хранения и проверки временной информации, которая будет доступна несколько раз, обычно в key/value. Например:

set("hello_world", "Привет от PHP!");
$value = $redis->get("hello_world");
var_dump($value);
 
echo ($redis->exists("Santa Claus")) ? "true" : "false";
?>

Метод set() используется для указания значения для конкретного ключа, в этом случае ключ hello_world и значение «Привет от PHP!» метод get() возвращает значение ключа, hello_world. Метод exists() отчитывается был ли данный ключ найден или нет в хранилищах Redis.

Ключ не ограничен в алфавитно-цифровыми символами и знаками подчеркивания. Ниже код будет работать так же хорошо:

set("Я PHP!", "Redis сейчас!");
$value = $redis->get("Я PHP!");

NCR (INCRBY) и DECR (DECRBY)

INCR и DECR команды используются для увеличения и уменьшения значения и являются отличным способом для поддержания счетчиков. INCR и DECR increment/decrement их значение 1, вы также можете использовать INCRBY и DECRBY настроить с большими интервалами. Вот пример:

 "tcp",
        "host" => "127.0.0.1",
        "port" => 6379));
*/
    echo "Успешное подключение Redis";
}
catch (Exception $e) {
    echo "Нет соединения с Redis";
    echo $e->getMessage();
}

Типы данных Redis

Как было написано выше, Redis имеет встроенные типы данных. Вы можете подумать, что это странно иметь типы данных NoSQL, системы хранения данных, таких как Redis, но это было бы полезно для разработчиков, чтобы структурировать информацию более осмысленно и выполнять определенные операции, которые, как правило, намного быстрее, если введены данные. Типы данных Redis:

  • String — основной тип данных, используемых в Redis, в котором можно хранить от нескольких символов до содержанию всего файла.
  • List — это простой список строк, порядок путем включения элементов. Вы можете добавлять и удалять элементы из обоих списков заголовка и колонтитула, так что вы можете использовать этот тип данных для реализации очередей.
  • Hash — карта строк ключей и строк значений. Таким образом, вы можете представлять объекты (думаю о нем, как одного уровня объект JSON).
  • Set — неупорядоченный набор строк, где вы можете добавлять, удалять и тестировать на наличие элементов. Одно ограничение в том, что вы не можете иметь повтор элементов.
  • Sorted set — не редкий случай тип набора данных. Разница в том, что каждый элемент имеет и связанный с ним счет, который использует порядок набора от маленьких до больших баллов.

Есть команды, которые делают работу с данными в другие типы данных.

HSET, HGET и HGETALL, HINCRBY и HDEL

Эти команды используются для работы с хешом данных Redis:

  • HSET — устанавливает значение ключа хэш-объекта.
  • HGET — получает значение ключа хэш-объекта.
  • HINCRBY — увеличить значение ключа хэш-объект с заданным значением.
  • HDEL — удалить ключ от объекта.
  • HGETALL — получить все ключи и данные по объекту.

Вот пример, который демонстрирует их использование:

hset("taxi_car", "brand", "Волга");
$redis->hset("taxi_car", "model", "ГАЗ 3110");
$redis->hset("taxi_car", "Номер лицензии", "RO-01-PHP");
$redis->hset("taxi_car", "Год изготовления", 1999);
$redis->hset("taxi_car", "nr_starts", 0);
/*
$redis->hmset("taxi_car", array(
    "brand" => "Волга",
    "model" => "ГАЗ 3110",
    "licence number" => "RO-01-PHP",
    "year of fabrication" => 1999,
    "nr_stats" => 0)
);
*/
echo "Номер лицензии: " .
    $redis->hget("taxi_car", "Номер лицензии") . "
"; // удалить номер лицензии $redis->hdel("taxi_car", "Номер лицензии"); // начало роста числа $redis->hincrby("taxi_car", "nr_starts", 1); $taxi_car = $redis->hgetall("taxi_car"); echo "Вся информация о такси"; echo "
";
var_dump($taxi_car);
echo "
";

LPUSH, RPUSH, LPOP, RPOP, LLEN, LRANGE

Эти важные команды для работы со списком типов в Redis. Список Redis похож на массив в PHP, и предлагают большую поддержку для реализации очереди, стеки, или крышками сбор определенного числа элементов.

  • LPUSH — удлинением элемент (ы) в списке.
  • RPUSH — добавляет элемент (ы) в списке.
  • LPOP — удаляет и возвращает первый элемент в списке.
  • RPOP — удаляет и возвращает последний элемент списка.
  • LLEN — получает длину списка.
  • LRANGE — получает элементы из списка.
rpush($list, "Symfony 2");
$redis->rpush($list, "Symfony 1.4");
$redis->lpush($list, "Zend Framework");
 
echo "Количество фреймворков в списке: " . $redis->llen($list) . "
"; $arList = $redis->lrange($list, 0, -1); echo "
";
print_r($arList);
echo "
"; // последняя запись в списке echo $redis->rpop($list) . "
"; // первая запись в списке echo $redis->lpop($list) . "
";

EXPIRE, EXPIREAT, TTL, и PERSIST

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

  • EXPIRE — задает истечение тайм-аута (в секундах) для ключа, после чего его значение будет удалено.
  • ExpireAt — наборы и истечение времени, используя unixtimestamp, который знает, когда ключ и значение, будет удалено.
  • TTL — получает оставшееся время действие ключа.
  • PERSIST — удаляет истечения данного ключа.
set("закончится через неделю", "У меня есть данные за неделю");
$redis->expireat("закончится через неделю", strtotime("+1 неделю"));
$ttl = $redis->ttl("закончится через неделю"); // будет 604800 секунд
 
// срок истечения установлен на один час
$redis->set("закончится через час", "У меня есть данные за час");
$redis->expire("закончится через час", 3600);
$ttl = $redis->ttl("закончится через час"); // будет 3600 секунд
 
// никогда не закончится
$redis->set("никогда не закончится", "Я хочу оставить навсегда!");