Полный цикл в digital

Комплексные типы данных

Хеш таблицы

Redis позволяет в качестве значения, использовать ключ значение. Что по сути будет почти аналогией объектов из JavaScript. Для записи объекта используется команда HSET в следующем формате:

HSET имя_ключа имя_атрибута значение

Для чтения объекта используется команда HGET в формате:

HGET имя_ключа имя_атрибута

Команда HGETALL используется для получения:

127.0.0.1:6379> HSET obj attr1 value1
(integer) 1
127.0.0.1:6379> HSET obj attr2 value2
(integer) 1
127.0.0.1:6379> HGET obj attr1
"value1"
127.0.0.1:6379> HGETALL obj
1) "attr1"
2) "value1"
3) "attr2"
4) "value2"

Множества

Не упорядоченная коллекция уникальных элементов. Для добавление нового элемента во множество используется команда SADD.

Для получения все элементов используется команда SMEMBERS.

SUNION используется для объединение множеств.

SDIFF используется для вычитания из первого множества второго.

SINTER возвращает общие элементы указаных множеств.

SPOP удаляет и возвращает случайный элемент множества.

127.0.0.1:6379> SADD objects obj1
(integer) 1
127.0.0.1:6379> SADD objects obj2
(integer) 1
127.0.0.1:6379> SADD objects obj3
(integer) 1
127.0.0.1:6379> SADD objects obj1
(integer) 0
127.0.0.1:6379> SMEMBERS objects
1) "obj2"
2) "obj3"
3) "obj1"

Упорядоченные множества

Упорядоченная коллекция уникальных элементов. Для добавление нового элемента в упорядоченное множество используется команда ZADD в формате:

ZADD имя_ключа порядковое_число_упорядочивания_множества значение

Команда ZRANGE возвращает срез данных множества:

127.0.0.1:6379> ZADD objects 1500 value1
(integer) 1
127.0.0.1:6379> ZADD objects 1600 value2
(integer) 1
127.0.0.1:6379> ZADD objects 1700 value3
(integer) 1
127.0.0.1:6379> ZRANGE objects 0 -1
1) "value1"
2) "value2"
3) "value3"

Списки

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

Команда добавления элемента в список LPUSH.

LRANGE возвращает срез списка с левой стороны в формате:

LRANGE имя_списка индекс_начало индекс_конца

Указание -1 означает до конца списка.

LPOP вернуть одно значение c левой стороны и удалить его из списка в формате:

LPOP имя_списка

Аналогичные команды RPUSH, RRANGE, RPOP только для правой стороны.

127.0.0.1:6379> LPUSH obj1 value1
(integer) 1
127.0.0.1:6379> LPUSH obj1 value2
(integer) 2
127.0.0.1:6379> LPUSH obj1 value3
(integer) 3
127.0.0.1:6379> LRANGE obj1 0 -1
1) "value3"
2) "value2"
3) "value1"
127.0.0.1:6379>

Транзакции

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

С помощью команды MULTI можно начать запись команд. Далее введенные команды не исполняются а записываются в буфер. Это будет происходит до ввода команды на исполнения транзакции EXEC. Далее все ранее введенные команды будут исполнены один за другим. Команда DISCARD отмена записи команд транзакций. Если возникнет ошибка в процессе ввода команд вся транзакция не будет выполнена:

127.0.0.1:6379> MULTI
OK
127.0.0.1:6379> SET obj1 value1
QUEUED
127.0.0.1:6379> SET obj2 value2
QUEUED
127.0.0.1:6379> EXEC
1) OK
2) OK
127.0.0.1:6379> GET obj1
"value1"

Механиз подписок PUS-SUB

Одно из основных преимуществ Redis от других хранилищ заключается в том, что в Redis есть механизм подписок. То есть Redis можно использовать как сервер сообщений.

Одни клиенты подписываются на определенные каналы используя команду:

SUBSCRIBE имя_канала

Другие клиенты могут отправлять сообщения в этот канал используя команду:

PUBLISH имя_канала значение

Допустим один клиент подписывается на канал:

SUBSCRIBE channel
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "channel"
3) (integer) 1

Другой клиент что то отправляет в этот канал:

PUBLISH channel "hello world"
(integer) 1

И в этот момент первый клиент получит это сообщение:

SUBSCRIBE channel
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "channel"
3) (integer) 1
1) "message"
2) "channel"
3) "hello world"
Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг