|
|||||||
Стартуем работу с Redis и PHP
Время создания: 13.07.2018 15:30
Текстовые метки: php redis cache
Раздел: PHP
Запись: Velonski/mytetra-database/master/base/1527484007jf6mb8sht2/text.html на raw.githubusercontent.com
|
|||||||
|
|||||||
Rdis - сетевое журналируемое хранилище данных типа “ключ — значение” с открытым исходным кодом. Как правило, данное программное средство используется как нереляционная высокопроизводительная СУБД. В ней можно хранить строки, хэши, списки и многое другое. Об этой статье Данная статья не является руководством по работе с Redis (для этого можете посетить официальный сайт). В данной статье мы рассмотрим как связать Redis и PHP. Установка Redis Процесс установки абсолютно не вызывает трудностей. Просто следуйте инструкциям, изложенным на официальном сайте. Установка Redis на Linux Для установке Redis на Linux вам потребуется TCL. Запустите команду: $ sudo apt-get install tcl Для установки Redis: $ wget http://download.redis.io/releases/redis-2.8.19.tar.gz $ tar xzf redis-2.8.19.tar.gz $ cd redis-2.8.19 $ make Заметка: значение 2.8.19 замените на номер текущей стабильной версии. Все бинарные файлы будут сохранены в каталоге SRC. Для запуска сервера: $ src/redis-server Установка Redis на Windows Для установки Redis на Windows просто скачайте последний пакет и следуйте инструкциям. Установите Predis - клиент для PHP. Для этого скопируйте его с GitHub в папку с проектом: $ git clone git://github.com/nrk/predis.git Подключение к Redis Для начала подключаем автозагрузчик Redis. Затем помещаем код в блок try/catch. Подключение к локальному Redis выглядит несколько иначе, чем к удалённому. <?php require "predis/autoload.php"; Predis\Autoloader::register();
try { $redis = new PredisClient();
// This connection is for a remote server /* $redis = new PredisClient(array( "scheme" => "tcp", "host" => "153.202.124.2", "port" => 6379 )); */ } catch (Exception $e) { die($e->getMessage()); } Теперь, когда подключение произошло, можем приступать к работе с Redis. Типы данных в Redis Redis поддерживает целый ряд типов данных. Вы можете спросить какое это имеет значение для NOSQL базы данных? Это позволяет хранить данные в том виде, в котором это целесообразней и в некоторых случаях влияет на скорость доступа к данным. Строка: обычные наборы символов. Список: линейный массив. Хэш-таблицы: ассоциативные массивы. Множества: набор уникальных значений. Упорядоченные множества: множества упорядоченные по параметру “score”. Есть ещё и другие типы данных, такие как битмапы и иероглифы, но их мы рассматривать не будем.2 Геттеры и сеттеры При работе с Redis нужно знать три основные команды: SET, GET и EXISTS. Они используются чтобы проверить наличие/отправить и получить данные от Redis. К примеру: <?php // помещение строки "Hello world" $redis->set(';message';, ';Hello world';);
// получаем строу по ключу $value = $redis->get('message');
// Hello world print($value);
echo ($redis->exists('message')) ? "Oui" : "please populate the message key"; Инкремент и декремент INCR и DECR - это команды, использующиеся для увеличения и уменьшения значения. <?php $redis->set("counter", 0);
$redis->incr("counter"); // 1 $redis->incr("counter"); // 2
$redis->decr("counter"); // 1 Для увеличения/уменьшения более чем на 1, можете воспользоваться командами INCRBY и DECRBY. <?php $redis->set("counter", 0);
$redis->incrby("counter", 15); // 15 $redis->incrby("counter", 5); // 20
$redis->decrby("counter", 10); // 10 Работа с списками Для работы со списками вам понадобятся команды: LPUSH: помещает элемент в начало списка RPUSH: помещает элемент в конец списка LPOP: извлекает первый элемент из списка RPOP: извлекает последний элемент из списка LLEN: получение размерности списка LRANGE: получение нескольких элементов списка Просто использование списков: <?php $redis->rpush("languages", "french"); // [french] $redis->rpush("languages", "arabic"); // [french, arabic]
$redis->lpush("languages", "english"); // [english, french, arabic] $redis->lpush("languages", "swedish"); // [swedish, english, french, arabic]
$redis->lpop("languages"); // [english, french, arabic] $redis->rpop("languages"); // [english, french]
$redis->llen("languages"); // 2
$redis->lrange("languages", 0, -1); // returns all elements $redis->lrange("languages", 0, 1); // [english, french] Работа с хэш-таблицами Как уже упоминалось, данный тип можно сопоставить с ассоциативными таблицами. Команды: HSET: установка элемента ключ-значение HGET: извлечение элемента ключ-значение HGETALL: извлечение всех элементов HMSET: установка нескольких элементов ключ-значение HDEL: Удаление элемента по ключу HINCRBY: увеличить элемент ключ-значение. <?php $key = ';linus torvalds';; $redis->hset($key, ';age';, 44); $redis->hset($key, ';country';, ';finland';); $redis->hset($key, 'occupation', 'software engineer'); $redis->hset($key, 'reknown', 'linux kernel'); $redis->hset($key, 'to delete', 'i will be deleted');
$redis->get($key, 'age'); // 44 $redis->get($key, 'country')); // Finland
$redis->del($key, 'to delete');
$redis->hincrby($key, 'age', 20); // 64
$redis->hmset($key, [ 'age' => 44, 'country' => 'finland', 'occupation' => 'software engineer', 'reknown' => 'linux kernel', ]);
// finally $data = $redis->hgetall($key); print_r($data); // возвращает все значения, которые принадлежат хэшу /* [ 'age' => 44, 'country' => 'finland', 'occupation' => 'software engineer', 'reknown' => 'linux kernel', ] */ Работа с множествами Список команд: – SADD: добавление числа N ключу – SREM: удаление числа N ключу – SISMEMBER: проверка существование значения – SMEMBERS: набор всех значений. <?php $key = "countries"; $redis->sadd($key, ';china';); $redis->sadd($key, ['england', 'france', 'germany']); $redis->sadd($key, 'china'); // игнорируется
$redis->srem($key, ['england', 'china']);
$redis->sismember($key, 'england'); // false
$redis->smembers($key); // ['france', 'germany'] Работа с упорядоченными множествами Поскольку Redis хранит данные в памяти, то они не могут располагаться там вечно. Поэтому нам понадобится возможность установить EXPIRE, EXPIREAT, TTL, PERSIST – EXPIRE: время истечения срока хранения в секундах, после чего элемент будет удалён – EXPIREAT: истечение срока unix timestamps – TTL: получить значение оставшегося времени – PERSIST: сброс истечения срока. $key = "expire in 1 hour"; $redis->expire($key, 3600); // истечёт через 1 час $redis->expireat($key, time() + 3600); // истечёт через 1 час
sleep(600); // имитация пройденного времени
$redis->ttl($key); // 3000, истечёт через 50 минут
$redis->persist($key); // никогда не истечёт. Итог Мы рассмотрели лишь самые необходимые команды. Все остальные можно найти на сайте Redis. Данный урок подготовлен для вас командой сайта ruseller.com Источник урока: https://scotch.io/tutorials/getting-started-with-redis-in-php Перевел: Станислав Протасевич Урок создан: 24 Апреля 2015 |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|