stringtranslate.com

Редис

Redis ( / ˈ r ɛ d ɪ s / ; [6] [7] Remote Dictionary Server ) [ 6] — это хранилище в памяти с открытым исходным кодом , используемое в качестве распределенной базы данных «ключ-значение» в памяти , кеша и сообщений. брокер , с дополнительной долговечностью . [8] Поскольку Redis хранит все данные в памяти и благодаря своей конструкции, он обеспечивает чтение и запись с малой задержкой , что делает его особенно подходящим для случаев использования, требующих кэша. Redis — самая популярная база данных NoSQL [9] [10] [11] и одна из самых популярных баз данных в целом. [12] Redis используется в таких компаниях, как Twitter , [13] [14] Airbnb , [15] Tinder , [16] Yahoo , [17] Adobe , [18] Hulu , [19] Amazon [20] и OpenAI . [21]

Redis поддерживает различные виды абстрактных структур данных , такие как строки , списки , карты , наборы , отсортированные наборы, HyperLogLogs , растровые изображения , потоки и пространственные индексы .

Проект разрабатывался и поддерживался Сальваторе Санфилиппо, начиная с 2009 года. [22] С 2015 по 2020 год он возглавлял основную команду проекта, спонсируемую Redis Labs . [23] Сальваторе Санфилиппо покинул Redis в качестве сопровождающего в 2020 году. [24] В 2021 году Redis Labs исключила название Labs из своего названия и теперь известна просто как «Redis». [25]

Redis выпускается под лицензией BSD с тремя пунктами . [5]

История

Сальваторе Санфилиппо, первоначальный разработчик Redis (фото сделано в 2015 году)

Имя Redis означает сервер удаленного словаря. [6] Проект Redis начался, когда Сальваторе Санфилиппо по прозвищу antirez , первоначальный разработчик Redis, пытался улучшить масштабируемость своего итальянского стартапа, разрабатывая анализатор веб-журналов в реальном времени . Столкнувшись со значительными проблемами при масштабировании некоторых типов рабочих нагрузок с использованием традиционных систем баз данных, Санфилиппо в 2009 году начал создавать прототип первой экспериментальной версии Redis на Tcl . [26] Позже Санфилиппо перевел этот прототип на язык C и реализовал первый тип данных — список. После нескольких недель успешного внутреннего использования проекта Санфилиппо решил открыть его исходный код, объявив о проекте на Hacker News . Проект начал набирать обороты, особенно среди сообщества Ruby: GitHub и Instagram стали одними из первых компаний, принявших его. [27] [28]

Санфилиппо был принят на работу в VMware в марте 2010 года. [29] [30] [31]

В мае 2013 года спонсором Redis выступила Pivotal Software (дочерняя компания VMware). [32]

В июне 2015 года спонсором разработки стала Redis Labs . [33]

В октябре 2018 года был выпущен Redis 5.0, в котором представлен Redis Stream — новая структура данных, которая позволяет хранить несколько полей и строковых значений с автоматической временной последовательностью по одному ключу. [34]

В июне 2020 года Сальваторе Санфилиппо ушел с поста единственного сопровождающего Redis. Санфилиппо сменили Йоси Готлиб и Оран Агра. [35] [36]

Отличия от других систем баз данных

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

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

Популярность

Согласно ежемесячным рейтингам DB-Engines , Redis часто является самой популярной базой данных «ключ-значение» . [9] Redis также был признан базой данных NoSQL №4 по удовлетворенности пользователей и присутствию на рынке на основе отзывов пользователей, [37] самой популярной базой данных NoSQL в контейнерах, [38] и хранилищем данных №4 2019 года по рейтингу веб-сайтов stackshare. .io. [39] Эта база данных была признана самой любимой базой данных в опросе разработчиков Stack Overflow в 2017, 2018, 2019, 2020 и 2021 годах. [40]

Поддерживаемые языки

Начиная с версии 2.6, Redis поддерживает серверные сценарии на языке Lua . [41]

Многие языки программирования имеют привязки к языку Redis на стороне клиента, в том числе: [42] ActionScript , C , C++ , C# , Chicken , Clojure , Common Lisp , Crystal , D , Dart , Delphi , [43] Elixir , Erlang , Go , Haskell. , Haxe , Io , Java , Nim , JavaScript ( Node.js ), Julia , Lua , Objective-C , OCaml , Perl , PHP , Pure Data , Python , R , [44] Racket , Ruby , Rust , Scala , Smalltalk , Swift и Tcl . На этих языках существует несколько клиентских программ. [42]

Типы данных

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

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

На основе API модулей Redis поддерживается больше типов данных. Обратите внимание, что некоторые из них имеют двойную лицензию и не соответствуют пункту BSD 3: [46]

Предыдущие реализации включают в себя:

Упорство

Redis обычно хранит весь набор данных в памяти. Версии до 2.4 можно настроить на использование так называемой виртуальной памяти [56] , в которой часть набора данных хранится на диске, но эта функция устарела. Сохранение в Redis может быть достигнуто двумя разными методами. Во-первых, путем создания моментальных снимков, когда набор данных асинхронно переносится из памяти на диск через регулярные промежутки времени в виде двоичного дампа, используя формат файла дампа Redis RDB. В качестве альтернативы можно использовать журналирование , при котором запись каждой операции, изменяющей набор данных, добавляется в файл, доступный только для добавления (AOF), в фоновом процессе. Redis может перезаписать файл, предназначенный только для добавления, в фоновом режиме, чтобы избежать неопределенного роста журнала. Ведение журнала было введено в версии 1.1 и обычно считается более безопасным подходом.

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

Репликация

Redis поддерживает репликацию мастер-реплика . Данные с любого сервера Redis могут реплицироваться на любое количество реплик. Реплика может быть главной для другой реплики. Это позволяет Redis реализовать однокорневое дерево репликации. Реплики Redis можно настроить на прием операций записи, допуская преднамеренные и непреднамеренные несогласованности между экземплярами. Функция публикации -подписки полностью реализована, поэтому клиент реплики может подписаться на канал и получать полный поток сообщений, опубликованных мастеру, в любом месте дерева репликации. Репликация полезна для масштабирования чтения (но не записи) или избыточности данных. [57]

Производительность

Когда надежность данных не требуется, Redis, хранящийся в памяти, позволяет ему работать лучше по сравнению с системами баз данных, которые записывают каждое изменение на диск, прежде чем считать транзакцию зафиксированной. [6] Redis работает как единый процесс и может быть однопоточным или двухпоточным при перезаписи AOF (файла, доступного только для добавления). [58] Таким образом, один экземпляр Redis не может использовать параллельное выполнение таких задач, как хранимые процедуры .

Кластеризация

Redis представил кластеризацию в апреле 2015 года с выпуском версии 3.0. [59] Спецификация кластера реализует подмножество команд Redis: доступны все одноклавишные команды, многоклавишные операции (команды, связанные с объединениями и пересечениями) ограничены ключами, принадлежащими одному и тому же узлу, а также команды, связанные с операциями выбора базы данных. недоступны. [60] Кластер Redis может масштабироваться до 1000 узлов, достигать «приемлемой» безопасности записи и продолжать работу в случае сбоя некоторых узлов. [61] [62]

Случаи использования

Из-за особенностей конструкции базы данных типичными вариантами использования являются кэширование сеансов, полностраничное кэширование, приложения очередей сообщений, списки лидеров и подсчет других. [63] Парадигма обмена сообщениями «публикация-подписка» обеспечивает связь между серверами в режиме реального времени.

Amazon Web Services предлагает управляемый сервис Redis под названием ElastiCache для Redis, Google предлагает управляемый сервис Redis под названием Cloud Memorystore, [64] Microsoft предлагает Azure Cache для Redis в Azure , [65] а Alibaba предлагает ApsaraDB для Redis в Alibaba Cloud . [66]

Пользователи

Redis используется в таких компаниях, как Twitter, [13] [14] [67] AirBnB, [15] Tinder, [16] Yahoo, [17] Adobe, [18] Hulu, [19] и Amazon. [20]

Смотрите также

Рекомендации

  1. ^ аб Бернарди, Стефано (4 января 2011 г.). «Интервью с Сальваторе Санфилиппо, создателем Redis, работающим на Сицилии». ЕС-Стартапы . Менло Медиа.
  2. ↑ Аб Хабер, Итамар (15 июля 2015 г.). «Сальваторе Санфилиппо: Добро пожаловать в Redis Labs». Редис Лабс .
  3. ^ «Выпуск 7.2.4». 9 января 2024 г. Проверено 19 января 2024 г.
  4. ^ «Введение в Redis». Redis написан на ANSI C и работает в большинстве систем POSIX, таких как Linux, *BSD, OS X, без внешних зависимостей.
  5. ^ аб «Копирование». Гитхаб . 4 марта 2022 г.
  6. ^ abcd «Часто задаваемые вопросы: Redis». Redis.io . Проверено 12 февраля 2022 г.
  7. ^ «Группы Google». groups.google.com . Проверено 25 февраля 2022 г.
  8. ^ "Редис". Редис . Проверено 22 июля 2023 г.
  9. ^ ab «Рейтинг DB-Engines - рейтинг популярности магазинов «ключ-значение»» . DB-двигатели .
  10. ^ Кларк, Линдси. «Redis становится самой популярной базой данных на AWS по мере роста развертывания сложных облачных приложений». www.theregister.com . Проверено 22 июля 2023 г.
  11. ^ «Instalinks EP 07: Redis™ — самая популярная технология баз данных в памяти» . Инстакластр . Проверено 22 июля 2023 г.
  12. ^ "Рейтинг DB-движков" . DB-двигатели . Проверено 22 июля 2023 г.
  13. ^ ab Scaling Redis в Twitter , получено 22 июля 2023 г.
  14. ^ ab Использование Redis в масштабе в Twitter - Рашми Рамеш из Twitter - RedisConf17 - , получено 22 июля 2023 г.
  15. ^ ab AWS re:Invent 2018: Путь Airbnb от самостоятельного управления Redis к ElastiCache для Redis (DAT319) , получено 22 июля 2023 г.
  16. ^ ab «Повышение отказоустойчивости в масштабе Tinder с помощью Amazon ElastiCache | Блог базы данных AWS». aws.amazon.com . 30 января 2020 г. Проверено 22 июля 2023 г.
  17. ^ ab AWS re:Invent 2022 — Как Yahoo оптимизирует рабочие нагрузки в памяти с помощью AWS (DAT321) , получено 22 июля 2023 г.
  18. ^ ab AWS re:Invent 2014 | (SDD402) Подробный обзор Amazon ElastiCache , получено 22 июля 2023 г.
  19. ^ ab «Пример использования Hulu». Amazon Веб-сервисы, Inc. Проверено 22 июля 2023 г.
  20. ^ ab «Пример миграции базы данных Amazon GameOn — Amazon Web Services (AWS)» . Amazon Веб-сервисы, Inc. Проверено 22 июля 2023 г.
  21. ^ «Повышенные ошибки API». status.openai.com . Проверено 28 октября 2023 г.
  22. ^ «Разговор с Сальваторе Санфилиппо, создателем базы данных Redis с открытым исходным кодом». ВенчурБит . 20 июня 2016 г. Проверено 29 июня 2021 г.
  23. Кепес, Бен (15 июля 2015 г.). «Redis Labs нанимает создателя Redis Сальваторе Санфилиппо». Сетевой мир . Проверено 30 августа 2015 г.
  24. ^ Франциско, Томас Клэберн в Сан. «Маэстро баз данных Антирез говорит Redis, что ему нужен неструктурированный код для написания жизни, а не структурированный код для управления программным обеспечением». www.theregister.com . Проверено 29 июня 2021 г.
  25. ^ «Стартап баз данных Redis Labs переименовывается в… просто Redis» . КремниевыйУГОЛ . 11 августа 2021 г. Проверено 11 августа 2021 г.
  26. Санфилиппо, Сальваторе (28 апреля 2017 г.). «Tcl-прототип Redis». GitHub суть . Проверено 8 октября 2018 г.
  27. Ванстрат, Крис (3 ноября 2009 г.). «Представляем Resque». Блог . Проверено 8 октября 2018 г.
  28. Кригер, Майк (31 октября 2011 г.). «Хранение сотен миллионов простых пар ключ-значение в Redis». Инженерный блог Instagram . Проверено 8 октября 2018 г.
  29. Шапира, Гвен (17 марта 2010 г.). «VMware нанимает разработчика Redis Key — но почему?». Блог . Проверено 25 сентября 2016 г.
  30. Санфилиппо, Сальваторе (15 марта 2010 г.). «VMware: новый дом Redis». Блог . Проверено 25 сентября 2016 г.
  31. Коллисон, Дерек (15 марта 2010 г.). «VMware: Консоль: VMware нанимает ключевого разработчика для Redis». Блог VMware . Архивировано из оригинала 22 марта 2010 года . Проверено 25 сентября 2016 г.
  32. ^ Санфилиппо, Сальваторе. «Спонсоры Redis». Redis.io . Редис Лабс . Проверено 11 апреля 2019 г.
  33. Санфилиппо, Сальваторе (15 июля 2015 г.). «Спасибо Pivotal, здравствуйте, Redis Labs». <антирез> . Проверено 3 апреля 2019 г.
  34. ^ abc «Redis 5.0 уже здесь!». 22 октября 2018 г.
  35. ^ «Маэстро баз данных Антирез говорит, что прибыл Redis: Кажется, ему нужен неструктурированный код для написания жизни, а не структурированный код для управления программным обеспечением» . theregister.com .
  36. ^ «Конец приключений Redis -». antirez.com . Проверено 10 ноября 2020 г.
  37. ^ «Лучшие базы данных NoSQL: отчет G2 Crowd за осень 2015 г.» G2 Толпа. Архивировано из оригинала 24 августа 2015 г. Проверено 25 августа 2015 г.
  38. ^ «8 удивительных фактов о реальном внедрении Docker» . Датадог . 13 июня 2018 г.
  39. ^ «🏆 50 лучших инструментов разработчика 2019 года» . СтекПоделиться . Проверено 28 июля 2020 г.
  40. ^ «Результаты опроса разработчиков 2021: самые любимые, страшные и востребованные базы данных» . Переполнение стека . Обмен стеками . Проверено 23 августа 2021 г.
  41. ^ "EVAL - Redis" . redis.io .
  42. ^ аб "Редис". redis.io .
  43. ^ "Даниелетети/Дельфириклиент" . Гитхаб . 17 сентября 2022 г.
  44. Льюис, BW (5 июля 2015 г.). "rredis: "Redis" Клиент базы данных ключей/значений". Комплексная сеть архивов R. Проверено 3 апреля 2019 г.
  45. ^ «Примечания к выпуску Redis 3.2» . Гитхаб . Проверено 10 марта 2017 г.
  46. ^ «Обзор лицензирования Redis» . Редис . Проверено 30 сентября 2023 г.
  47. ^ «RedisJSON — тип данных JSON для Redis» .
  48. ^ «RedisJSON — тип данных JSON для Redis» . redisjson.io .
  49. ^ RediSearch, RediSearch, 30 сентября 2023 г. , получено 30 сентября 2023 г.
  50. ^ «RedisTimeSeries — структура данных временных рядов для Redis» .
  51. ^ «RedisBloom — Модуль вероятностных типов данных для Redis» .
  52. ^ «Модули». Редис . Проверено 30 сентября 2023 г.
  53. ^ «RedisGraph — модуль графовой базы данных для Redis» .
  54. ^ Коган, Лиор (5 июля 2023 г.). «Объявление об окончании срока службы RedisGraph». Редис . Проверено 30 сентября 2023 г.
  55. ^ FalkorDB, FalkorDB, 29 сентября 2023 г. , получено 30 сентября 2023 г.
  56. ^ «Виртуальная память». Redis.io . Проверено 11 апреля 2019 г.
  57. ^ «Архив кода Google — долгосрочное хранилище для хостинга проектов Google Code» . code.google.com .
  58. ^ «Redis на Raspberry Pi: приключения в чужих землях - <антирез>» . antirez.com .
  59. ^ «Примечания к выпуску Redis 3.0» . Гитхаб . Проверено 10 марта 2017 г.
  60. ^ «Спецификация кластера» . Проверено 10 марта 2017 г.
  61. ^ «Спецификация кластера» . Проверено 10 марта 2017 г.
  62. ^ «Учебное пособие по кластеру» . Проверено 10 марта 2017 г.
  63. ^ «5 лучших вариантов использования Redis — ObjectRocket» . ОбъектРокет . Рэкспейс. 7 ноября 2017 г.
  64. ^ «Memorystore: хранилище данных в памяти» . Гугл облако . Проверено 3 февраля 2023 г.
  65. ^ «Кэш Azure Redis — облачная служба кэширования Redis — Microsoft Azure» . azure.microsoft.com .
  66. ^ «ApsaraDB для Redis: служба баз данных ключевых значений — облако Alibaba» . www.alibabacloud.com .
  67. ^ «Как Twitter использует Redis для масштабирования — 105 ТБ ОЗУ, 39 млн запросов в секунду, более 10 000 экземпляров — высокая масштабируемость» . Highscalability.com .

дальнейшее чтение

Внешние ссылки