Серия Redis (2): 5 структур данных Redis и их общие команды

Redis

В предыдущем блоге мы объяснили, что такое Redis и как установить Redis в средах Windows и Linux.

Для тех, кто не видел, вы можете нажать на ссылку ниже, чтобы просмотреть его:

Серия Redis (1): Введение в Redis и установку среды.

В этом блоге мы объясним пять структур данных Redis и их общие команды.Пять структур данных:

  1. Строка Строка
  2. Список
  3. Набор коллекций
  4. Хэш
  5. отсортированное множество ZSet

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

1. Строка

В Redis Strings может хранить следующие 3 типа значений:

  1. байтовая строка
  2. целое число
  3. число с плавающей запятой

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

  1. Общие команды
  2. Самодобавляющаяся команда
  3. команда подстроки

Далее мы объясняем их один за другим.

1.1 Общие команды

Общие команды: GET, SET, DEL.

Функции команд GET, SET, DEL следующие:

Заказ Функции
GET Получить значение указанного ключа
SET Установить значение указанного ключа
DEL удалить значение указанного ключа

Затем мы открываем интерактивный клиент redis-cli и выполняем приведенную выше команду, чтобы увидеть эффект.

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

1.2 Команды автоматического увеличения и уменьшения

Команды автоматического увеличения и уменьшения в основном включают: INCR, DECR, INCRBY, DECRBY, INCRBYFLOAT.

Когда пользователь сохраняет значение в строку Redis, если значение может быть преобразовано в целое число или число с плавающей запятой, тогда Redis будет знать об этом и позволит пользователю выполнять различные операции со строкой.INCR*иDECR*работать.

Функции команд INCR и DECR следующие:

Заказ грамматика Функции
INCR INCR keyname Увеличьте значение, сохраненное ключом, на 1
DECR DECR keyname Уменьшить значение, хранящееся в ключе, на 1

Ниже приведены 3 ненормальных сценария, которые могут существовать:

  1. При выполнении операции автоинкремента или автодекремента для несуществующего ключа Redis будет рассматривать значение этого ключа как 0 при выполнении операции.
  2. При выполнении операции автоинкремента или автодекремента для ключа, в котором хранится пустая строка, Redis будет рассматривать значение этого ключа как 0 при выполнении операции.
  3. Redis вернет ошибку при увеличении или уменьшении строкового ключа, значение которого не может быть интерпретировано как целое число или число с плавающей запятой.

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

Функции команд INCRBY и DECRBY аналогичны приведенным выше командам INCR и DECR, но INCRBY и DECRBY могут каждый раз указывать значение для увеличения или уменьшения, в то время как INCR и DECR каждый раз увеличивают или уменьшают на 1.

Команда INCRBYFLOAT аналогична команде INCRBY, за исключением того, что команда INCRBYFLOAT используется для увеличения или уменьшения числа с плавающей запятой, а команда INCRBY используется для увеличения или уменьшения целых чисел.

Функции команд INCRBY, DECRBY, INCRBYFLOAT следующие:

Заказ грамматика Функции
INCRBY INCR keyname amount Добавьте значение, сохраненное ключом, к целочисленной сумме
DECRBY DECR keyname amount Вычесть целое число из значения, сохраненного ключом
INCRBYFLOAT INCRBYFLOAT keyname amount Добавьте значение, хранящееся в ключе, к сумме с плавающей запятой

Мы можем открыть интерактивный клиент redis-cli и выполнить приведенную выше команду, чтобы увидеть эффект.

1.3 Команды подстроки

Команды подстроки в основном включают: APPEND, GETRANGE и SETRANGE.

Функция команды APPEND следующая:

Команда: ДОБАВИТЬ

Синтаксис: APPEND значение имени ключа

Функция: добавить значение значения в конец текущего сохраненного значения указанного ключа с именем ключа.

Функциональность команды GETRANGE следующая:

Команда: ПОЛУЧИТЬ

Синтаксис: GETRANGE keyname start end

Функция: получить подстроку, состоящую из всех символов в диапазоне от начала смещения (включая начало) до конца смещения (включая конец).

Функция команды SETRANGE следующая:

Команда: НАСТРОЙКА

Синтаксис: SETRANGE keyname начальное значение

Функция: установить подстроку, начинающуюся с начального смещения, на заданное значение.

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

2. Список

Списки в Redis в основном имеют следующие две характеристики:

  1. Хранить несколько строк по порядку
  2. Элементы в списке могут повторяться

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

  1. Общие команды
  2. Блокировать всплывающую команду
  3. команда перемещения элемента

Далее мы объясняем их один за другим.

2.1 Общие команды

Общие команды: RPUSH, LPUSH, RPOP, LPOP, LINDEX, LRANGE, LTRIM.

Функции команды RPUSH следующие:

Команда: НАЖМИТЕ

Синтаксис: значение имени ключа RPUSH [значение ...]

Функция: Нажмите один или несколько значений вправо в конце списка

Функции команды LPUSH следующие:

Команда: ЛПУШ

Синтаксис: значение имени ключа LPUSH [значение ...]

Функция: Поместить одно или несколько значений в левый конец списка

Функции команды RPOP следующие:

Команда: РПОП

Синтаксис: Keyname rpop

Функция: удалить и вернуть крайний правый элемент списка

Функции команды LPOP следующие:

Команда: ЛПОП

Синтаксис: имя ключа LPOP

Функция: удалить и вернуть крайний левый элемент списка

Функциональность команды lindex выглядит следующим образом:

Команда: lindex.

Синтаксис: смещение имени ключа LINDEX

Функция: возвращает элемент, смещение которого равно смещению в списке.

Функциональность команды LRANGE следующая:

Команда: LRANGE

Синтаксис: LRANGE имя ключа start end

Функция: возвращает все элементы в диапазоне от начального (включая начальное) смещения до конечного смещения (включая конец) списка.

Функции команды LTRIM следующие:

Команда: ЛТРИМ

Синтаксис: имя ключа LTRIM start end

Функция: обрезать список, сохраняя только элементы в диапазоне от начального (включая начальное) смещения до конечного смещения (включая конец).

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

2.2 Блокировка всплывающих команд

Есть всплывающая блокировка команды: BLPOP, Brpop.

Функциональность команды BLPOP выглядит следующим образом:

Команда: БЛОПОП

Синтаксис: имя ключа BLPOP [имя ключа ...] тайм-аут

Функция: извлеките крайний левый элемент из первого непустого списка, если нет, заблокируйте в течение секунд ожидания и дождитесь появления всплывающего элемента.

Функциональность команды BRPOP следующая:

Команда: БРОПОП

Синтаксис: имя ключа BRPOP [имя ключа ...] тайм-аут

Функция: извлеките самый правый элемент из первого непустого списка, если нет, заблокируйте в течение секунд ожидания и дождитесь появления всплывающего элемента.

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

2.3 Команды перемещения элемента

Команды перемещения элемента в основном включают в себя: RPOPLPUSH, BRPOPLPUSH.

Функциональность команды RPOPLPUSH следующая:

Команда: РПОПЛПУШ

Синтаксис: RPOPLPUSH исходный ключ целевой ключ

Функция: извлечь крайний правый элемент из списка ключей-источников, поместить этот элемент в крайний левый список ключей-приемников и вернуть этот элемент пользователю.

Команду BRPOPLPUSH можно рассматривать как блокирующую реализацию команды RPOPLPUSH.Функции следующие:

Команда: BRPOPLPUSH

Синтаксис: BRPOPLPUSH тайм-аут ключа источника

Функция: извлечь крайний правый элемент из списка ключей-источников, поместить этот элемент в крайний левый список ключей-назначений и вернуть этот элемент пользователю.Если исходный ключ пуст, заблокируйте на время ожидания в секундах и дождитесь появления всплывающего элемента.

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

3. Набор для сбора

Коллекции Redis начинаются сбеспорядокспособ хранения несколькихразныеЭлементы.

По сравнению со списком, упомянутым выше, коллекции в REDIS имеют следующие две особенности:

  1. Хранение множества случайных струн
  2. Элементы в коллекции не могут повторяться

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

  1. Общие команды
  2. команда перемещения элемента
  3. Разность/пересечение/объединение команд

Далее мы объясняем их один за другим.

3.1 Общие команды

Общие команды: SADD, SMEMBERS, SISMEMBER, SREM, SCARD.

Описание функции вышеуказанной команды выглядит следующим образом:

Заказ грамматика Функции
SADD SADD keyname item [item ...] Добавить один или несколько элементов в коллекцию
SMEMBERS SMEMBERS keyname Возвращает все элементы, содержащиеся в коллекции
SISMEMBER SISMEMBER keyname item Проверьте, существует ли элемент элемента в имени ключа коллекции
SREM SREM keyname item [item ...] Удалить один или несколько элементов из коллекции
SCARD SCARD keyname Возвращает количество элементов в коллекции

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

3.2 Команды перемещения элемента

Команды перемещения элемента в основном включают: SMOVE.

Описание функции вышеуказанной команды выглядит следующим образом:

Синтаксис: SMOVE sourcekey элемент destkey

Функция: удалить элемент элемента в коллекции sourcekey и добавить элемент элемента в коллекцию destkey.

​ Если элемент был успешно удален, вернуть 1, иначе вернуть 0

Ниже приведен пример использования команды SMOVE:

3.3 Команды различия/пересечения/объединения

Команды пересечения/объединения/разности в основном включают: SDIFF, SDIFFSTORE, SINTER, SINTERSTORE, SUNION, SUNIONSTORE.

Описание функции вышеуказанной команды выглядит следующим образом:

Заказ грамматика Функции
SDIFF SDIFF keyname [key-name ...] Возвращает элементы, которые существуют в первом наборе и не существуют в других наборах (операция набора разностей)
SDIFFSTORE SDIFFSTORE destkey keyname [key-name ...] Сохраните элементы, которые существуют в первом наборе и не существуют в других наборах (операция набора различий) в наборе ключей назначения
SINTER SINTER keyname [key-name ...] Возвращает элементы, которые присутствуют во всех множествах одновременно (операция пересечения)
SINTERSTORE SINTERSTORE destkey keyname [key-name ...] Сохранение элементов (операция пересечения), существующих во всех наборах одновременно, в набор destkey
SUNION SUNION keyname [key-name ...] Возвращает элементы, которые существуют хотя бы в одном наборе (операция объединения)
SUNIONSTORE SUNIONSTORE destkey keyname [key-name ...] Сохраните элементы, существующие хотя бы в одной коллекции (операция объединения), в коллекцию destkey.

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

4. Хэш

Что касается структуры данных Hash, некоторые книги называются хешами, некоторые книги называются хэшами, и в этой статье используется это имя: хеш.

Хэш Redis может хранить сопоставление между несколькими парами ключ-значение, то есть пользователи могут хранить несколько пар ключ-значение в ключе Redis, как показано ниже:

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

4.1 Добавление пар ключа

Для добавления пар ключ-значение в хеш есть две команды, а именно HSET, HMSET, где HSET может добавить только пары ключ-значение, а HMSET может добавить несколько пар.

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

Хэш-ключ в это время содержит 3 пары ключ-значение, а именно:

4.2 Получение пар ключ-значение

Есть пять команд для получения пары ключ-значение в хеше:

  1. HGET Получить значение указанного ключа из хеша
  2. HMGET Получить значение одного или нескольких ключей из хеша
  3. Хайки получают все ключи, содержащиеся в хэш
  4. HVALS получить все значения, содержащиеся в хэше
  5. HGETALL Получает все пары ключ-значение, содержащиеся в хеше.

Вот пример использования этих 5 команд:

4.3 Получить количество пар ключ-значение

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

Ниже приведеныHLENПример использования команды:

4.4 Определить, существует ли ключ

в состоянии пройтиHEXISTSкоманда, чтобы проверить, существует ли ключ в хэше.

Ниже приведеныHEXISTSПример использования команды:

4.5 Автоматическое увеличение/уменьшение

Подобно командам самоувеличения и самоуменьшения строк, при хешировании мы можем использоватьHINCRBYКоманда добавляет целое число к значению, хранящемуся в ключе, используяHINCRBYFLOATКоманда добавляет число с плавающей запятой к значению, хранящемуся в ключе.

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

4.6 Удаление пар ключ-значение

в состоянии пройтиHDELКоманда для удаления одного или нескольких ключей из хеша.

Ниже приведеныHDELПример использования команды:

5. Сортированный набор ZSet

Отсортированные наборы, такие как хэши, можно использовать для хранения сопоставлений между несколькими парами "ключ-значение". Ключи отсортированных наборов называются членами, и каждый член отличается. Значение называется оценкой, и оценка должна быть числом с плавающей запятой. .

На следующем рисунке представлен пример отсортированного набора из 2 элементов:

Далее давайте рассмотрим часто используемые команды упорядоченного набора.

5.1 Добавление элементов

в состоянии пройтиZADDКоманда добавляет элемент в отсортированный набор.

Ниже приведеныZADDПример использования команды:

Ключ zset в настоящее время содержит сопоставление между 3 членами и оценкой следующим образом:

5.2 Получение элементов

Есть две команды для получения элементов в упорядоченном наборе:

  1. ZRANGE

    Синтаксис: ZRANGE имя ключа start stop [WITHSCORES]

    Функция: возвращает элементы отсортированного набора, ранжированные между началом и концом, если указан необязательный параметр WITHSCORES,

    ​ Тогда балл участника будет возвращен вместе

  2. ZRANGEBYSCORE

    Синтаксис: ZRANGEBYSCORE имя ключа min max [WITHSCORES] [LIMIT offset count]

    Функция: возвращает элементы отсортированного набора, чьи баллы находятся между минимумом и максимумом.Если указан необязательный параметр WITHSCORES,

    ​ Тогда балл участника будет возвращен вместе

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

5.3 Получает количество элементов

в состоянии пройтиZCARDКоманда для получения количества элементов, содержащихся в отсортированном наборе.

Ниже приведеныZCARDПример использования команды:

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

Ниже приведеныZCOUNTПример использования команды:

5.4 Автоматическое увеличение/уменьшение

Подобно командам самоувеличения и самоуменьшения строк, в упорядоченном наборе мы можем использоватьZINCRBYКоманда добавляет целое число к счету участника.

Следующее этоZINCRBYПример использования команды:

5.5 Удаление элементов

в состоянии пройтиZREMКоманда для удаления одного или нескольких членов отсортированного набора.

Ниже приведеныZREMПример использования команды:

Если вы хотите узнать больше о командах Redis, вы можете проверить адрес официального сайта:redis.io/commands.

6. Исходный код и ссылка

Джозайя Л. Карлсон «Рейды в действии»