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

Что такое Redis?

Согласно сайту Redis:

Redis - это хранилище структур данных в памяти с открытым исходным кодом (под лицензией BSD), используемое в качестве базы данных, кеша и брокера сообщений. Он поддерживает структуры данных, такие как строки, хэши, списки, наборы, отсортированные наборы с запросами диапазона, растровые изображения, гиперлоггоги и геопространственные индексы с запросами радиуса.

Простыми словами:

Redis - это очень быстрая нереляционная база данных пар ключ-значение в памяти

Если вы работаете с РСУБД, вы можете рассматривать ключ как идентификатор записи в базе данных. В СУБД вы выполняете CRUD для записи на основе ее идентификатора. Поскольку Redis - это база данных NoSQL, вы не знаете ID. Таким образом, вам придется полагаться на KEY для выполнения всех видов операций.

ПРИМЕЧАНИЕ. КЛЮЧИ в Redis чувствительны к регистру.

Установка:

На Mac вы можете установить Redis через brew:

$ ›Brew install redis

Вы можете установить последнюю версию (3.2.9) на ubuntu с помощью следующих команд:

$ wget http://download.redis.io/releases/redis-3.2.9.tar.gz

$ tar xzf redis-3.2.9.tar.gz

$ CD Redis-3.2.9

$ make

Как вариант, вы можете скачать двоичный файл прямо со страницы загрузки Redis.

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

Типы данных Redis:

В Redis мы храним все в виде пар ключ-значение. В этом руководстве мы обсудим пять основных типов данных:

  1. STRING сек.
  2. СПИСКИ
  3. НАБОРЫ
  4. HASHes
  5. ZSET

Приступим к изучению этих типов данных. Запустите redis-server и запустите redis-cli:

ПРИМЕЧАНИЕ. Для каждого типа данных Redis предлагает большой набор команд. Мы рассмотрим наиболее часто используемые команды. Если вы хотите сослаться на полный список доступных команд, вы можете сослаться на команды Redis здесь.

  1. STRING:

Мы сохраняем STRING как значение ключа (ID), как показано ниже.

У нас есть три широко используемые команды для типов данных STRING.

SET: устанавливает значение, сохраненное для данного ключа.

GET: извлекает данные, хранящиеся в заданном ключе.

DEL: удаляет значение, хранящееся в данном ключе.

2. СПИСОК:

Redis поддерживает структуру связанных списков и предлагает все основные команды (LPUSH, RPUSH, LPOP, RPOP и т. Д.), Которые мы ожидаем от связанного списка. Мы можем рассматривать ценности как список предметов. Обратите внимание, что списки могут иметь одинаковые значения, как показано ниже.

Следующие команды широко используются для Redis LIST:

RPUSH: нажмите элемент справа от списка / инициализируйте список.

LPUSH: нажмите элемент слева от списка / инициализируйте список.

LPOP: показывать элемент в левой части списка.

RPOP: показывать элемент с правой стороны списка.

LRANGE: извлекает все данные из списка для заданного диапазона индекса.

LINDEX: извлекает данные из списка по заданному индексу.

СОВЕТ: все команды начинаются с L.

3. УСТАНОВИТЬ:

SET очень похож на LIST, но элементы в SET должны быть уникальными. SET хранит набор элементов в неупорядоченном виде. Таким образом, у нас не может быть команд PUSH или POP с SET.

Следующие команды широко используются для Redis SET:

SADD: добавить элемент в SET / инициализировать SET

SMEMBERS: извлекает все элементы для ключа в SET.

SISMEMBER: проверяет, находится ли элемент в НАБОРЕ.

SREM: удаляет элемент из набора, если он существует.

СОВЕТ: все команды начинаются с S.

4. HASH

Хеш - одна из наиболее широко используемых структур данных в Ruby. LIST и SET хранят последовательность элементов, тогда как Redis HASH дает нам истинный вкус хэшей (словаря), которые мы используем в повседневном программировании.

ПРИМЕЧАНИЕ. 1. Даже HASH хранятся с идентификаторами KEY. Вы можете думать об этом как об идентификаторе или имени переменной для хранения HASH. В Ruby мы определяем переменную HASH как:

2.4.0: 001 ›my_hash = {key1: 'value1', key2: 'value2'}
=› {: key1 = ›” value1,: key2 = ›” value2}
2.4.0: 002 ›my_hash [: key1]
=› «значение1»

Эта переменная my_hash - это переменная, в которой хранится HASH. Точно так же в Redis мы определяем HASH с именем (главным ключом) и добавляем вспомогательную пару «ключ-значение» к этому HASH.

ПРИМЕЧАНИЕ. 2. Значение дополнительной пары "ключ-значение" (т. е. фактический хэш) всегда является строкой. Хотя его можно интерпретировать как числа и можно увеличивать / уменьшать.

Следующие команды широко используются для Redis HASH:

HSET: сохраняет значение ключа для данного хэша / инициализирует HASH.

HGET: извлекает значение по заданному ключу хэша для заданного хэша.

HGETALL: извлекает весь HASH для заданного имени HASH.

HDEL: удаляет ключ из заданного хэша, если он существует.

СОВЕТ: Все команды для HASH начинаются с H.

5. ZSET или заказанный SET

ZSET - это упорядоченная структура данных пары ключ-значение. Ключи называются членами, а значения (ограниченные числами с плавающей запятой) называются оценками. Думайте об этом как о классных комнатах в школе. Класс 1 (главный ключ для ZSET) имеет много членов (студентов). Каждый ученик набрал от 0 до 100 баллов по математике. Вы можете добавлять / удалять учеников из Класса 1. Вы можете выбрать всех учеников для заданного диапазона баллов.

Несколько команд, которые можно использовать с ZSET:

ZADD: добавление одного или нескольких участников с заданной оценкой в ​​ZSET / инициализация ZSET с одним или несколькими участниками.

ZRANGE: извлекает все элементы в ZSET с их позиции в отсортированном порядке.

ZRANGEBYSCORE: выбирает элементы в ZSET на основе диапазона оценок.

ZREM: удаляет элемент из ZSET, если он существует.

СОВЕТ: Все команды для ZSET начинаются с Z.

Как видите, ZSET дает нам множество возможностей для ранжирования, запросов и выполнения базового CRUD поверх упорядоченного набора данных.

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

Упорство:

Поскольку Redis - это база данных в памяти, вы можете беспокоиться о ситуации, когда ваш сервер выйдет из строя. Redis предлагает два способа сохранить ваши данные:

  1. Выгрузка данных из памяти на диск в компактном формате.
  2. Записывать / добавлять файл со всеми командами, которые изменяют данные в Redis.

Надеюсь, вам понравился этот пост. В следующих сериях я создам несколько приложений, в которых вы сможете реально использовать эти типы данных.

Ссылки:

  1. Веб-сайт Redis
  2. Redis в действии