Рубрики
Uncategorized

Обзор применения типов данных redis

Автор оригинала: David Wong.

Предисловие

  1. Redis-это база данных на основе журналов с открытым исходным кодом, основанная на ключах и значениях, написанная на языке ANSI C, поддерживающая сеть, основанную на памяти и постоянную, и предоставляющая API-интерфейсы на многих языках.
  2. Это сервер структуры данных, хранящийся в памяти и может использоваться в качестве базы данных, кэша и агента очереди сообщений.
  3. Основной сценарий применения редис заключается в обеспечении высокоскоростного доступа ко всем данным в памяти, обеспечивая при этом функцию выгрузки данных.
  4. Reid имеет встроенную репликацию, сценарии Lua, отзыв LRU, прочее и различные уровни сохраняемости диска, обеспечивая при этом высокую доступность через redis Sentinel и автоматическое разделение через Redis Cluster.
  5. Redis поддерживает строку, хэш-таблицу, список, коллекцию, упорядоченную коллекцию, растровое изображение, гиперлоги и другие типы данных.
  6. Наиболее часто используемыми типами данных радиостанций являются строка, хэш, список, набор, набор сортировок, pub/sub, транзакции.

Строковый тип

  1. Строковый тип-это простой тип ключ-значение. Значение-это не только строка, но и число.
  2. Общие команды: set, get, decr, incr, mget и т.д.
  3. В дополнение к предоставлению тех же операций get, set, incr, decr, что и memcached, redis также предоставляет следующие операции:

Тип хэша

  1. Хэш особенно подходит для хранения объектов.
  2. Общие команды: hget, hset, hgetall и т.д.
  3. Сценарий применения: Храните некоторые структурированные данные, такие как псевдоним пользователя, возраст, пол, интеграл и т. Д., И храните данные объекта информации о пользователе.
  4. Давайте приведем простой пример для описания сценария приложения Hash. Например, мы храним данные объекта информации о пользователе, которые содержат следующую информацию:

  5. Анализ примеров:

  6. Будьте осторожны:

Тип списка

  1. Тип списка по сути представляет собой двусторонний связанный список, каждый элемент которого имеет строковый тип, что позволяет использовать список либо в качестве стека, либо в качестве очереди.
  2. Типы списков часто используются для служб очереди сообщений для завершения обмена сообщениями между несколькими программами.
  3. Общие команды: lpush, rpush, lpop, rpop, lrange и т.д.
  4. Lpush вставляется в левую часть списка, то есть в начало; rpush вставляется в правую часть списка, то есть в хвост; lrange (ключ, начало, конец) возвращает элементы в указанном интервале, начиная с верхнего (левого) начала до конца (правого) интервала.
  5. Сценарий приложения: Для достижения рейтинга последних новостей и других функций, а также для организации очереди сообщений.
  6. Примеры Простых Команд Сообщений:

Тип набора

  1. Тип набора представляет собой неупорядоченную коллекцию строковых типов.
  2. Концепция множества множеств-это комбинация неповторяющихся значений.
  3. Элемент набора может содержать до (32-1 из 2) элементов.
  4. Внутренняя реализация set-это хэш-карта, значение которой всегда равно null.
  5. Функция, предоставляемая set, аналогична функции list. Особенностью набора является то, что он может автоматически распределять вес при установке.
  6. Общие команды: sadd, s pop, члены s, профсоюз и т.д.
  7. Набор-хороший выбор, когда вам нужно сохранить список данных и вы не хотите дублировать данные.
  8. И set предоставляет важный интерфейс для определения того, входит ли участник в набор set set set, который список не может предоставить.
  9. С помощью заданной структуры данных можно хранить некоторые агрегированные данные. Например, в приложении для микроблогов все подписчики пользователя могут существовать в наборе, и все их поклонники могут существовать в наборе.
  10. Redis также предоставляет такие операции, как наборы пересечений, объединений и различий для коллекций, которые могут легко реализовать такие функции, как общие интересы, общие предпочтения, друзья второй степени и так далее.

Тип набора

  1. Как и set, сортированный набор также представляет собой набор элементов строкового типа. Разница в том, что каждый элемент связан со счетом двойного типа, а порядок элементов определяется счетом.
  2. Сортированный набор упорядочен по вставке, т. е. автоматическая сортировка.
  3. Общие команды: zadd, zrange, zrem, z-карта и т.д.
  4. ZRange (ключ, начало, конец) возвращает все элементы в указанном диапазоне баллов в порядке от низкого до высокого; zRevRange (ключ, начало, конец) возвращает все элементы в упорядоченном наборе, соответствующем ключу, в порядке от высокого до низкого.
  5. Если вам нужен упорядоченный и неповторяющийся список коллекций, вы можете выбрать структуру данных отсортированного набора.
  6. Примеры применения:

паб/суб

  1. Три команды “подписаться”, “отписаться” и “опубликовать” реализуют универсальные методы публикации и подписки.
  2. Отправитель (клиент, отправляющий сообщение) не отправляет информацию напрямую конкретному получателю (клиенту, получающему информацию), а отправляет информацию в канал, который затем пересылает информацию всем подписчикам, заинтересованным в канале.
  3. Отправителю не нужно знать никакой информации об абоненте, а абоненту не нужно знать, какой клиент отправляет ему информацию. Для этого нужно только обратить внимание на интересующий канал.
  4. Публикация/подписка в redis разработана для того, чтобы быть очень легкой и лаконичной, она обеспечивает базовые возможности публикации сообщений и подписки, но еще не предоставляет различные функции корпоративного уровня, такие как сохранение сообщений.
  5. Клиент redis публикует сообщение, и многие другие клиенты redis подписываются на него. Опубликованное сообщение будет немедленно утеряно. redis не сохранит опубликованное сообщение; подписчик сообщения может получить сообщение только после подписки, но предыдущее сообщение в канале получить невозможно.
  6. Издателям или клиентам публикации не нужны эксклюзивные ссылки. Вы можете использовать ту же ссылку redis-клиент для других операций (приращение и т.д.) При публикации сообщений.
  7. Подписчикам сообщений или клиентам подписки нужны эксклюзивные ссылки, то есть redis-клиент не может интерполировать другие операции во время подписки.
  8. На этом этапе клиент ожидает сообщения на стороне публикации блокирующим способом, поэтому для подписки необходимо использовать отдельную ссылку, даже в дополнительных потоках.
  9. По умолчанию TCP имеет фиксированное время соединения. Если в субподрядчике не получено сообщение pub и/или не сгенерировано сообщение в пабе и в этом мире, соединение в субподрядчике будет принудительно восстановлено.
  10. Это требует специальных средств для решения, используя таймеры для имитации механизма выживания между pub и sub, таймеры не могут превышать максимальное время соединения tcp.
  11. Как только абонентский конец будет отключен, некоторые сообщения будут потеряны, то есть сообщения будут потеряны во время сбоя связи, поэтому нам нужно рассмотреть возможность сохранения списка redis.
  12. Если вы очень обеспокоены каждым сообщением, то вам следует выполнить некоторую дополнительную дополнительную работу на основе redis. Если вы хотите, чтобы подписка была долговечной, для справки можно использовать следующие идеи дизайна:

  13. Вышеуказанные методы могут гарантировать, что успешное поступление информации не будет потеряно.

операции

  1. Транзакции Redis могут выполнять несколько команд одновременно.
  2. Транзакция проходит три этапа от начала до исполнения:

  3. Транзакция-это отдельная изолированная операция: все команды в транзакции сериализуются и выполняются последовательно.
  4. Во время выполнения транзакции она не будет прерываться запросами команд, отправленными другими клиентами.
  5. Выполнение одной команды redis является атомарным, но redis не добавляет никакого механизма для поддержания атомарности транзакций, поэтому выполнение транзакций redis не является атомарным.
  6. Транзакции можно понимать как упакованный сценарий пакетного выполнения, но пакетные инструкции не являются атомизированными операциями. Невыполнение одной из инструкций в середине не приведет к откату предыдущих инструкций или невыполнению последующих инструкций.
  7. Команды multi, exec, discard и watch являются основой транзакций redis.
  8. много:

  9. выполнение:

  10. отбрасывать:

  11. часы:

Оригинал: “https://developpaper.com/overview-of-the-application-of-redis-data-types/”