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

Redis

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

  • Строки, которые являются двоичными и имеют размер до 512 МБ.

  • Списки, предлагающие O(1) операций push/pop/trim/length независимо от количества элементов, содержащихся в списке. Списки также предоставляют операции блокировки (команды в стиле всплывающего окна, которые блокируют, если в списке нет элементов), поэтому списки Redis часто используются для реализации фоновых заданий и других видов очередей. Есть очень популярные библиотеки, такие как Resque и Sidekiq, использующие Redis в качестве бэкэнда.

  • Хэши - это карты значений полей, как и в большинстве языков программирования. Они полезны для представления объектов и очень эффективны с точки зрения памяти для небольшого количества полей, но при этом очень масштабируемы, поддерживая до 2,14 миллиарда полей на хэш.

  • Наборы - это неупорядоченные наборы элементов, которые полезны для добавления, удаления и проверки наличия элементов в постоянном времени. Небольшие наборы целых чисел чрезвычайно эффективны, но наборы масштабируются до 2,14 миллиарда элементов на набор. Можно запросить случайные элементы внутри наборов, что очень полезно. См. SPOP и SRANDMEMBER для получения дополнительной информации.

  • Сортированные наборы - это очень полезные структуры данных, в которых коллекции или элементы упорядочены по числу с плавающей запятой, называемому оценкой. Структура данных предлагает набор очень мощных операций, выполняемых за логарифмическое время: можно добавлять и удалять элементы, увеличивать оценку элементов, получать диапазоны по рангу и по счету, при условии, что элемент получает свою позицию (ранг) или оценку, и так далее. Примечательным приложением являются таблицы лидеров, в которых участвуют миллионы пользователей: есть компании, использующие отсортированные наборы Redis для реализации таблиц лидеров популярных игр, таких как игры Facebook.

  • Географические наборы - это отсортированные наборы, в которых оценки элементов используются для хранения местоположений - долготы и широты - в виде значений, закодированных с помощью геохеша. Сохраненные таким образом элементы могут быть запрошены по их расстоянию от произвольной позиции с помощью команды GEORADIUS. Геопространственные индексы используются любыми приложениями и сервисами на основе определения местоположения, включая социальные сети, навигацию и помощь в поездках, а также управление автопарком.

  • Счетчики - это не совсем тип как таковой, это фактически операции, которые вы можете использовать со строками, представляющими целые числа. Например, командаINCR mykey автоматически создаст ключ со строковым значением "1"если ключ не существует. Следующий вызов изменит значение строки на"2", и так далее. Вы можете увеличивать и уменьшать числа с плавающей запятой или на любую величину. Значения находятся в диапазоне 64-битного числа со знаком даже при использовании Redis на 32-битных архитектурах.

  • Битовые операции, как и счетчики, работают со строками по-другому. Пользователь может обрабатывать строку как массив битов, выполняя операции с очень эффективным использованием памяти. Например, если у вас десять миллионов пользователей и вы хотите сохранить логическое значение для каждого пользователя, вам понадобится чуть больше 1 МБ памяти! Благодаря богатому набору побитовых команд вы можете: подсчитывать количество установленных битов с помощью BITCOUNT; выполнять побитовое И, ИЛИ, ИСКЛЮЧАЮЩЕЕ ИЛИ и НЕ между растровыми изображениями, используя BITOP; найти первый бит очищенным или установленным в заданном диапазоне с помощью BITPOS; и так далее.

  • Битовые поля - это строки, которые, подобно битовым операциям, обрабатываются как массив битов. Они позволяют ссылаться на целые числа различных типов (беззнаковые или знаковые 1-битные до 64-битных и 63-битных соответственно) по смещению или позиции. Каждое такое битовое поле может быть прочитано, записано или увеличено и поддерживает несколько режимов переполнения с помощью команды BITFIELD.

  • HyperLogLog - это вероятностная структура данных, которая эффективно (с точки зрения вычислительной сложности и сложности памяти) решает проблему различного подсчета. Реализация HLL в Redis требует всего 12 КБ для каждого счетчика и показывает стандартную ошибку 0,81%. HLL могут быть добавлены к элементам, объединены и подсчитаны с помощью команд PFADD, PFMERGE и PFCOUNT соответственно (префикс PF команд дан в честь Филиппа Флажолета, изобретателя HyperLogLog).

  • Потоки, которые представляют собой структуры, которые обеспечивают абстракцию журнальных данных, предназначенных только для добавления. Сообщения в потоке добавляются производителями с помощью команды XADD, а их обработка выполняется потребителями с помощью XREAD. Потоки также поддерживают концепцию групп потребителей через XREADGROUP для простого и эффективного масштабирования.

  • Модули, которые в основном представляют собой динамически загружаемые серверные библиотеки, могут разрабатываться и использоваться кем угодно для расширения базовой платформы Redis чем угодно, от пользовательских типов данных (например, фильтра Блума) до полноценных серверов (например, поисковой системы).). Модули поддерживаются начиная с v4.

Чтобы быстро начать работу, попробуйте Redis прямо в браузере, прочтите это краткое введение в типы данных Redis или посмотрите отличную презентацию Питера Купера.

Возможности как хранилище данных

Хотя Redis- это система в памяти, она предлагает множество функций хранилища данных.

  • Настраиваемая сохраняемость на диске с сохранением моментальных снимков на определенный момент времени или файл только для добавления с настраиваемой политикой fsync.
  • Асинхронная репликация.
  • Redis также является очень быстрым сервером Pub/Sub.
  • API для настройки Redis во время выполнения и автоматической перезаписи файла конфигурации.
  • Автоматическое переключение и мониторинг через Redis Sentinel.
  • Кластеризация без общего доступа доступна в версии v3.

Он имеет впечатляющую экосистему клиентских библиотек для всех основных и элитных языков программирования.

Сообщество

Сообщество Redis велико и готово помочь.

Поддержка

Поддержку Redis оказывают следующие компании:

Связанные теги