Редис
Оригинальный автор(ы) | Сальваторе Санфилиппо [1] [2] |
---|---|
Разработчик(и) | Редис [1] [2] |
Первоначальный выпуск | 26 февраля 2009 г [3] |
Стабильная версия | 7.2.5 [4] / 19 мая 2024 г |
Репозиторий | |
Написано в | С |
Операционная система | Unix-подобный [5] |
Доступно в | Английский |
Тип | Хранилище структур данных , база данных «ключ-значение» |
Лицензия | Доступная лицензия исходного кода Redis или SSPL [6] |
Веб-сайт | Redis |
Redis ( / ˈ r ɛ d ɪ s / ; [7] [8] Сервер удаленного словаря ) [7] — это с доступным исходным кодом хранилище в памяти , используемое в качестве распределенной , в памяти «ключ-значение» базы данных кэша и брокера сообщений с дополнительной надежностью . [9] Поскольку Redis хранит все данные в памяти и благодаря своей конструкции, он обеспечивает чтение и запись с малой задержкой , что делает его особенно подходящим для случаев использования, требующих кэша. Redis — самая популярная база данных NoSQL . [10] [11] [12] и одна из самых популярных баз данных в целом. [13] Redis используется в таких компаниях, как Twitter , [14] [15] Эйрбнб , [16] Tinder , [17] Яху , [18] Adobe , [19] Хулу , [20] Амазонка [21] и ОпенАИ . [22]
Redis поддерживает различные виды абстрактных структур данных , такие как строки , списки , карты , наборы , отсортированные наборы, HyperLogLogs , растровые изображения , потоки и пространственные индексы .
Проект был разработан и поддерживается Сальваторе Санфилиппо, начиная с 2009 года. [23] С 2015 по 2020 год он возглавлял основную команду проекта, спонсируемого Redis Labs . [24] Сальваторе Санфилиппо покинул Redis с поста сопровождающего в 2020 году. [25] В 2021 году Redis Labs исключила название Labs из своего названия и теперь известна просто как Redis. [26]
В 2018 году некоторые модули Redis переняли SSPL . [27] В 2024 году основной код Redis перешел на двойную лицензию в соответствии с доступной лицензией Redis Source v2 и общедоступной лицензией на стороне сервера v1. [6]
История
[ редактировать ]Имя Redis означает сервер удаленного словаря. [7] Проект Redis начался, когда Сальваторе Санфилиппо по прозвищу antirez , первоначальный разработчик Redis, пытался улучшить масштабируемость своего итальянского стартапа, разрабатывая анализатор веб-журналов в реальном времени . Столкнувшись со значительными проблемами при масштабировании некоторых типов рабочих нагрузок с использованием традиционных систем баз данных, Санфилиппо в 2009 году начал создавать прототип первой экспериментальной версии Redis на Tcl . [28] Позже Санфилиппо перевел этот прототип на язык C и реализовал первый тип данных — список. После нескольких недель успешного внутреннего использования проекта Санфилиппо решил открыть его исходный код, анонсировав проект на Hacker News . Проект начал набирать обороты, особенно среди сообщества Ruby: GitHub и Instagram стали одними из первых компаний, принявших его. [29] [30]
Санфилиппо был принят на работу в VMware в марте 2010 года. [31] [32] [33]
В мае 2013 года спонсором Redis выступила Pivotal Software (дочерняя компания VMware). [34]
В июне 2015 года спонсором разработки стала Redis Labs . [35]
В августе 2018 года Redis Labs объявила о переходе на лицензию на программное обеспечение с доступным исходным кодом — Server Side Public License . Первоначально сообщалось, что изменение затронет только некоторые дополнительные модули, разработанные в первую очередь Redis Labs. [27]
В октябре 2018 года был выпущен Redis 5.0, в котором представлен Redis Stream — новая структура данных, которая позволяет хранить несколько полей и строковых значений с автоматической, основанной на времени последовательностью по одному ключу. [36]
В июне 2020 года Сальваторе Санфилиппо ушел с поста единственного сопровождающего Redis. Санфилиппо сменили Йоси Готлиб и Оран Агра. [37] [38]
В 2024 году Redis перешел на другую лицензию на проприетарное программное обеспечение, известную как Redis Source Available License v2 и Server Side Public License v1, также для своего основного репозитория. [6] Как следствие, Linux Foundation создал форк под названием Valkey . [39] позволяя сопровождающим сообщества, участникам и пользователям продолжать работу над версией базы данных Redis с открытым исходным кодом.
Отличия от других систем баз данных
[ редактировать ]Redis популяризировал идею системы, которую можно считать хранилищем и кэшем одновременно. Он был спроектирован так, чтобы данные всегда модифицировались и считывались из основной памяти компьютера, но также сохранялись на диске в формате, непригодном для произвольного доступа к данным. Отформатированные данные восстанавливаются в памяти только после перезагрузки системы.
Redis также предоставляет модель данных, которая очень необычна по сравнению с системой управления реляционными базами данных (СУБД). Пользовательские команды описывают не запрос, который должен выполнить механизм базы данных, а скорее конкретные операции, которые выполняются над заданными абстрактными типами данных. Поэтому данные должны храниться таким образом, чтобы их можно было впоследствии быстро извлечь. Поиск осуществляется без помощи системы базы данных в форме вторичных индексов, агрегатов или других общих функций традиционных СУБД. Реализация Redis активно использует системный вызов fork для дублирования процесса, содержащего данные, так что родительский процесс продолжает обслуживать клиентов, пока дочерний процесс записывает данные в памяти на диск.
Популярность
[ редактировать ]Согласно ежемесячным рейтингам DB-Engines , Redis часто является самой популярной базой данных «ключ-значение» . [10] Redis также занял четвертое место по степени удовлетворенности пользователей и присутствию на рынке на основе отзывов пользователей. [40] самая популярная база данных NoSQL в контейнерах, [41] и хранилище данных №4 в 2019 году по рейтингу веб-сайта stackshare.io. [42] Эта база данных была признана самой любимой базой данных в Stack Overflow опросе разработчиков в 2017, 2018, 2019, 2020 и 2021 годах. [43]
Поддерживаемые языки
[ редактировать ]Начиная с версии 2.6, Redis поддерживает серверные сценарии на языке Lua . [44]
Многие языки программирования имеют привязки к языку Redis на стороне клиента, в том числе: [45] ActionScript , C , C++ , C# , Chicken , Clojure , Common Lisp , Crystal , D , Dart , Delphi , [46] Elixir , Erlang , Go , Haskell , Haxe , Io , Java , Nim , JavaScript ( Node.js ), Julia , Lua , Objective-C , OCaml , Perl , PHP , Pure Data , Python , R , [47] Racket , Ruby , Rust , Scala , Smalltalk , Swift и Tcl . На этих языках существует несколько клиентских программ. [45]
Типы данных
[ редактировать ]Redis сопоставляет ключи с типами значений. Важным отличием Redis от других структурированных систем хранения является то, что Redis поддерживает не только строки , но и абстрактные типы данных:
- строк Списки
- Наборы строк (наборы неповторяющихся несортированных элементов)
- Сортированные наборы строк (наборы неповторяющихся элементов, упорядоченные по числу с плавающей запятой, называемому счетом).
- Хэш-таблицы, в которых ключи и значения являются строками.
- HyperLogLogs, используемый для приблизительной оценки размера кратности набора, доступен начиная с Redis 2.8.9 в апреле 2014 года. [36]
- Поток записей с группами потребителей позволяет хранить несколько полей и строковых значений с автоматической, основанной на времени последовательностью по одному ключу, доступному начиная с Redis 5.0 в октябре 2018 г. [36]
- Геопространственные данные благодаря реализации метода геохеширования , доступного начиная с Redis 3.2. [48]
Тип значения определяет, какие операции (называемые командами) доступны для этого значения. Redis поддерживает высокоуровневые атомарные операции на стороне сервера, такие как пересечение, объединение и различие между наборами, а также сортировку списков, наборов и отсортированных наборов.
На основе API модулей Redis поддерживается больше типов данных. Обратите внимание, что некоторые из них имеют двойную лицензию и не соответствуют пункту BSD 3: [49]
- JSON — RedisJSON [50] реализует ECMA-404 (стандарт обмена данными объектной нотации JavaScript) как собственный тип данных. [51]
- Поиск — поисковая система для Redis, обеспечивающая вторичное индексирование, полнотекстовый поиск, поиск по векторному сходству и агрегирование. [52]
- Временной ряд — RedisTimeSeries [53] реализует структуру данных временных рядов
- Фильтр Блума , фильтр «Кукушка» , эскиз Count–min и Top-K – RedisBloom [54] реализует набор вероятностных структур данных для Redis
- Другие [55]
Предыдущие реализации включают в себя:
Упорство
[ редактировать ]Redis обычно хранит весь набор данных в памяти. Версии до 2.4 можно настроить на использование того, что они называют виртуальной памятью. [59] в котором часть набора данных хранится на диске, но эта функция устарела. Сохранение в Redis может быть достигнуто двумя разными методами. Во-первых, путем создания моментальных снимков, когда набор данных асинхронно переносится из памяти на диск через регулярные промежутки времени в виде двоичного дампа, используя формат файла дампа Redis RDB. В качестве альтернативы можно использовать журналирование , при котором запись каждой операции, изменяющей набор данных, добавляется в файл, доступный только для добавления (AOF), в фоновом процессе. Redis может перезаписать файл, предназначенный только для добавления, в фоновом режиме, чтобы избежать неопределенного роста журнала. Ведение журнала было введено в версии 1.1 и обычно считается более безопасным подходом.
По умолчанию Redis записывает данные в файловую систему не реже, чем каждые 2 секунды, при необходимости доступны более или менее надежные параметры. В случае полного сбоя системы при настройках по умолчанию будет потеряно всего несколько секунд данных.
Репликация
[ редактировать ]Redis поддерживает репликацию мастер-реплика . Данные с любого сервера Redis могут реплицироваться на любое количество реплик. Реплика может быть главной для другой реплики. Это позволяет Redis реализовать однокорневое дерево репликации. Реплики Redis можно настроить на прием операций записи, допуская преднамеренные и непреднамеренные несогласованности между экземплярами. Функция публикации-подписки полностью реализована, поэтому клиент реплики может подписаться на канал и получать полный поток сообщений, опубликованных мастеру, в любом месте дерева репликации. Репликация полезна для масштабирования чтения (но не записи) или избыточности данных. [60]
Производительность
[ редактировать ]Когда надежность данных не требуется, Redis, хранящийся в памяти, позволяет ему работать лучше по сравнению с системами баз данных, которые записывают каждое изменение на диск, прежде чем считать транзакцию зафиксированной. [7] Redis работает как единый процесс и является однопоточным или двухпоточным при перезаписи AOF (файла, предназначенного только для добавления). [61] Таким образом, один экземпляр Redis не может использовать параллельное выполнение таких задач, как хранимые процедуры .
Кластеризация
[ редактировать ]Redis представил кластеризацию в апреле 2015 года с выпуском версии 3.0. [62] Спецификация кластера . реализует подмножество команд Redis: доступны все одноклавишные команды, многоклавишные операции (команды, связанные с объединениями и пересечениями) ограничены ключами, принадлежащими одному и тому же узлу, а команды, связанные с операциями выбора базы данных, недоступны [63] Кластер Redis может масштабироваться до 1000 узлов, обеспечивать «приемлемую» безопасность записи и продолжать работу в случае сбоя некоторых узлов. [64] [65]
Варианты использования
[ редактировать ]Из-за особенностей конструкции базы данных типичными вариантами использования являются кэширование сеансов, полностраничное кэширование, приложения очередей сообщений, списки лидеров и подсчет, среди прочего. [66] Парадигма обмена сообщениями «публикация-подписка» обеспечивает связь между серверами в режиме реального времени.
Amazon Web Services предлагает управляемый сервис Redis под названием ElastiCache для Redis, Google предлагает управляемый сервис Redis под названием Cloud Memorystore. [67] Microsoft предлагает Azure Cache для Redis в Azure . [68] и Alibaba предлагает ApsaraDB для Redis в Alibaba Cloud . [69]
Пользователи
[ редактировать ]Redis используется в таких компаниях, как Twitter, [14] [15] [70] ЭйрБнБ, [16] Tinder, [17] Яху, [18] Adobe, [19] Хулу, [20] и Амазонка. [21]
См. также
[ редактировать ]- Бесконфликтный реплицируемый тип данных
- Мемкеш
- Инфиниспан
- Valkey , преемник Redis как проект бесплатного программного обеспечения.
Ссылки
[ редактировать ]- ^ Перейти обратно: а б Бернарди, Стефано (4 января 2011 г.). «Интервью с Сальваторе Санфилиппо, создателем Redis, работающим на Сицилии» . ЕС-Стартапы . Менло Медиа.
- ^ Перейти обратно: а б Хабер, Итамар (15 июля 2015 г.). «Сальваторе Санфилиппо: Добро пожаловать в Redis Labs» . Редис Лабс .
- ^ «Страница 7 из 7 — Redis — Архив кода Google — Долгосрочное хранение для хостинга проектов кода Google» . code.google.com . Проверено 22 марта 2024 г.
- ^ «Выпуск 7.2.5» . 19 мая 2024 г. Проверено 25 мая 2024 г.
- ^ «Введение в Redis» .
Redis написан на ANSI C и работает в большинстве систем POSIX, таких как Linux, *BSD, OS X, без внешних зависимостей.
- ^ Перейти обратно: а б с «ЛИЦЕНЗИЯ.txt» . Гитхаб . 20 марта 2024 г.
- ^ Перейти обратно: а б с д «Часто задаваемые вопросы: Редис» . Redis.io . Проверено 12 февраля 2022 г.
- ^ «Группы Google» . groups.google.com . Проверено 25 февраля 2022 г.
- ^ «Редис» . Редис . Проверено 22 июля 2023 г.
- ^ Перейти обратно: а б «DB-Engines Ranking — рейтинг популярности магазинов «ключ-значение»» . DB-двигатели .
- ^ Кларк, Линдси. «Redis становится самой популярной базой данных на AWS по мере роста развертывания сложных облачных приложений» . www.theregister.com . Проверено 22 июля 2023 г.
- ^ «Instalinks EP 07: Redis™ — самая популярная технология баз данных в памяти» . Инстакластр . Проверено 22 июля 2023 г.
- ^ «Рейтинг DB-движков» . DB-двигатели . Проверено 22 июля 2023 г.
- ^ Перейти обратно: а б Масштабирование Redis в Twitter , получено 22 июля 2023 г.
- ^ Перейти обратно: а б Использование Redis в масштабе в Twitter - Рашми Рамеш из Twitter - RedisConf17 - , получено 22 июля 2023 г.
- ^ Перейти обратно: а б AWS re:Invent 2018: Путь Airbnb от самостоятельного управления Redis к ElastiCache для Redis (DAT319) , получено 22 июля 2023 г.
- ^ Перейти обратно: а б «Повышение масштабируемой отказоустойчивости Tinder с помощью Amazon ElastiCache | Блог базы данных AWS» . aws.amazon.com . 30 января 2020 г. Проверено 22 июля 2023 г.
- ^ Перейти обратно: а б AWS re:Invent 2022 — Как Yahoo оптимизирует рабочие нагрузки в памяти с помощью AWS (DAT321) , получено 22 июля 2023 г.
- ^ Перейти обратно: а б AWS re:Invent 2014 | (SDD402) Подробный обзор Amazon ElastiCache , получено 22 июля 2023 г.
- ^ Перейти обратно: а б «Кейс-исследование Hulu» . Amazon Веб-сервисы, Inc. Проверено 22 июля 2023 г.
- ^ Перейти обратно: а б «Пример миграции базы данных Amazon GameOn – Amazon Web Services (AWS)» . Amazon Веб-сервисы, Inc. Проверено 22 июля 2023 г.
- ^ «Повышенные ошибки API» . status.openai.com . Проверено 28 октября 2023 г.
- ^ «Разговор с Сальваторе Санфилиппо, создателем базы данных с открытым исходным кодом Redis» . ВенчурБит . 20 июня 2016 г. Проверено 29 июня 2021 г.
- ^ Кепес, Бен (15 июля 2015 г.). «Redis Labs нанимает создателя Redis Сальваторе Санфилиппо» . Сетевой мир . Проверено 30 августа 2015 г.
- ^ Франциско, Томас Клэберн в Сан. «Маэстро баз данных Антирез говорит Redis, что ему нужен неструктурированный код для написания жизни, а не структурированный код для управления программным обеспечением» . www.theregister.com . Проверено 29 июня 2021 г.
- ^ «Стартап Redis Labs, работающий с базами данных, переименовывается в… просто Redis» . КремниевыйУГОЛ . 11 августа 2021 г. Проверено 11 августа 2021 г.
- ^ Перейти обратно: а б Клэберн, Томас. «У Redis есть лицензия на убийство: производитель баз данных с открытым исходным кодом использует собственный код» . www.theregister.com . Проверено 21 марта 2024 г.
- ^ Санфилиппо, Сальваторе (28 апреля 2017 г.). «Tcl-прототип Redis» . GitHub суть . Проверено 8 октября 2018 г.
- ^ Ванстрат, Крис (3 ноября 2009 г.). «Представляем Resque» . Блог . Проверено 8 октября 2018 г.
- ^ Кригер, Майк (31 октября 2011 г.). «Хранение сотен миллионов простых пар ключ-значение в Redis» . Инженерный блог Instagram . Проверено 8 октября 2018 г.
- ^ Шапира, Гвен (17 марта 2010 г.). «VMware нанимает ключевого разработчика Redis – но почему?» . Блог . Проверено 25 сентября 2016 г.
- ^ Санфилиппо, Сальваторе (15 марта 2010 г.). «VMware: новый дом Redis» . Блог . Проверено 25 сентября 2016 г.
- ^ Коллисон, Дерек (15 марта 2010 г.). «VMware: Консоль: VMware нанимает ключевого разработчика для Redis» . Блог VMware . Архивировано из оригинала 22 марта 2010 года . Проверено 25 сентября 2016 г.
- ^ Санфилиппо, Сальваторе. «Спонсоры Redis» . Redis.io . Редис Лабс . Проверено 11 апреля 2019 г.
- ^ Санфилиппо, Сальваторе (15 июля 2015 г.). «Спасибо, Pivotal, здравствуйте, Redis Labs» . <антирез> . Проверено 3 апреля 2019 г.
- ^ Перейти обратно: а б с «Redis 5.0 уже здесь!» . 22 октября 2018 г.
- ^ «Маэстро баз данных Антирез говорит Redis, что ему нужен неструктурированный код для написания жизни, а не структурированный код для управления программным обеспечением» . theregister.com .
- ^ «Конец приключений Redis —» . antirez.com . Проверено 10 ноября 2020 г.
- ^ «Linux Foundation запускает сообщество Valkey с открытым исходным кодом» .
- ^ «Лучшие базы данных NoSQL: отчет G2 Crowd за осень 2015 г.» . G2 Толпа. Архивировано из оригинала 24 августа 2015 г. Проверено 25 августа 2015 г.
- ^ «8 удивительных фактов о реальном внедрении Docker» . Датадог . 13 июня 2018 г.
- ^ «🏆 50 лучших инструментов разработчика 2019 года» . СтекПоделиться . Проверено 28 июля 2020 г.
- ^ «Результаты опроса разработчиков 2021 года: самые любимые, опасные и востребованные базы данных» . Переполнение стека . Обмен стеками . Проверено 23 августа 2021 г.
- ^ «ЭВАЛ – Редис» . redis.io .
- ^ Перейти обратно: а б «Редис» . redis.io .
- ^ "Даниелетети/Дельфириклиент" . Гитхаб . 17 сентября 2022 г.
- ^ Льюис, BW (5 июля 2015 г.). "rredis: Клиент базы данных ключей/значений Redis" . Комплексная сеть архивов R. Проверено 3 апреля 2019 г.
- ^ «Примечания к выпуску Redis 3.2» . Гитхаб . Проверено 10 марта 2017 г.
- ^ «Обзор лицензирования Redis» . Редис . Проверено 30 сентября 2023 г.
- ^ «RedisJSON — тип данных JSON для Redis» .
- ^ «RedisJSON — тип данных JSON для Redis» . redisjson.io .
- ^ RediSearch , RediSearch, 30 сентября 2023 г. , получено 30 сентября 2023 г.
- ^ «RedisTimeSeries — структура данных временных рядов для Redis» .
- ^ «RedisBloom — Модуль вероятностных типов данных для Redis» .
- ^ «Модули» . Редис . Проверено 30 сентября 2023 г.
- ^ «RedisGraph — модуль графовой базы данных для Redis» .
- ^ Коган, Лиор (5 июля 2023 г.). «Объявление об окончании срока службы RedisGraph» . Редис . Проверено 30 сентября 2023 г.
- ^ FalkorDB , FalkorDB, 29 сентября 2023 г. , получено 30 сентября 2023 г.
- ^ «Виртуальная память» . Redis.io . Проверено 11 апреля 2019 г.
- ^ «Архив кода Google — долгосрочное хранилище для хостинга проектов Google Code» . code.google.com .
- ^ «Редис на Raspberry Pi: приключения в чужих землях — <антирез>» . antirez.com .
- ^ «Примечания к выпуску Redis 3.0» . Гитхаб . Проверено 10 марта 2017 г.
- ^ «Кластерная спецификация» . Проверено 10 марта 2017 г.
- ^ «Кластерная спецификация» . Проверено 10 марта 2017 г.
- ^ «Кластерное руководство» . Проверено 10 марта 2017 г.
- ^ «5 лучших вариантов использования Redis — ObjectRocket» . ОбъектРокет . Рэкспейс. 7 ноября 2017 г.
- ^ «Memorystore: хранилище данных в памяти» . Гугл облако . Проверено 03 февраля 2023 г.
- ^ «Кэш Azure Redis — облачная служба кэширования Redis — Microsoft Azure» . azure.microsoft.com .
- ^ «ApsaraDB для Redis: служба баз данных ключевых значений — облако Alibaba» . www.alibabacloud.com .
- ^ «Как Twitter использует Redis для масштабирования — 105 ТБ ОЗУ, 39 ММ QPS, более 10 000 экземпляров — высокая масштабируемость» . Highscalability.com .
Дальнейшее чтение
[ редактировать ]- Изабель Дрост и Ян Ленард (29 октября 2009 г.), Happenings: NoSQL Conference, Берлин , The H. Слайды для презентации Redis. Краткое содержание .
- Билли Ньюпорт (IBM): « Развитие модели программирования ключ/значение на более высокий уровень » Конференция Qcon 2009, Сан-Франциско.
- Мишра: « Установите и настройте Redis на сервере Centos/Fedora ».
- Э. Музакитис: « Мониторинг производительности Redis »
Внешние ссылки
[ редактировать ]- Распределенная вычислительная архитектура
- Кэширование базы данных
- Системы управления базами данных
- Программное обеспечение C (язык программирования)
- Базы данных «ключ-значение»
- Программное обеспечение, поддерживающее сценарии Lua (язык программирования)
- NoSQL
- Программное обеспечение, использующее общедоступную лицензию на стороне сервера
- Структурированное хранилище