ройки
![]() | |
Оригинальный автор(ы) | Сальваторе Санфилиппо [ 1 ] [ 2 ] |
---|---|
Разработчик(и) | Linux Фонд [ 3 ] |
Первоначальный выпуск | 28 марта 2024 г [ 4 ] |
Стабильная версия | 7.2.6 [ 5 ] ![]() |
Репозиторий | |
Написано в | С |
Операционная система | Unix-подобный [ 6 ] |
Доступно в | Английский |
Тип | Хранилище структур данных , база данных «ключ-значение» |
Лицензия | Лицензия BSD [ 7 ] |
Веб-сайт | ройки ![]() |
Valkey — это хранилище в памяти с открытым исходным кодом, используемое в качестве распределенной , в памяти «ключ-значение» базы данных кэша и брокера сообщений с дополнительной надежностью . [ 8 ] Поскольку Valkey хранит все данные в памяти и благодаря своей конструкции, он обеспечивает чтение и запись с малой задержкой , что делает его особенно подходящим для случаев использования, требующих кэша. Valkey — преемник Redis , самой популярной базы данных NoSQL . [ 9 ] [ 10 ] [ 11 ] и одна из самых популярных баз данных в целом. [ 12 ] Valkey или его предшественник Redis используются в таких компаниях, как Twitter , [ 13 ] [ 14 ] Эйрбнб , [ 15 ] Tinder , [ 16 ] Яху , [ 17 ] Adobe , [ 18 ] Хулу , [ 19 ] Амазонка [ 20 ] и ОпенАИ . [ 21 ]
Valkey поддерживает различные виды абстрактных структур данных , такие как строки , списки , карты , наборы , отсортированные наборы, HyperLogLogs , растровые изображения , потоки и пространственные индексы .
Проект был разработан и поддерживается Сальваторе Санфилиппо, начиная с 2009 года. [ 22 ] С 2015 по 2020 год он возглавлял основную команду проекта, спонсируемого Redis Labs . [ 23 ]
В 2018 году Redis Ltd. , компания, управляющая разработкой Redis, лицензировала некоторые модули по собственной лицензии SSPL . [ 24 ] В 2024 году компания внезапно перевела свой основной код Redis с лицензии BSD на проприетарные лицензии. [ 25 ] Это побудило большую часть сообщества пользователей и разработчиков создать форк кода под новым именем Valkey, сохранив при этом лицензию BSD. [ 3 ]
История
[ редактировать ]
Первоначальное название Redis означало «Remote Dictionary Server». [ 26 ] [ 27 ] Проект 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. [ 24 ]
В октябре 2018 года был выпущен Redis 5.0, в котором представлен Redis Stream — новая структура данных, которая позволяет хранить несколько полей и строковых значений с автоматической, основанной на времени последовательностью по одному ключу. [ 36 ]
В июне 2020 года Сальваторе Санфилиппо ушел с поста единственного сопровождающего Redis. Санфилиппо сменили Йоси Готлиб и Оран Агра. [ 37 ] [ 38 ]
В 2024 году Linux Foundation создал форк Redis под названием Valkey. [ 39 ] позволяя сопровождающим сообщества, участникам и пользователям продолжать работу над версией базы данных Redis с открытым исходным кодом. Это произошло в ответ на то, что компания Redis перешла на полностью проприетарные лицензии на программное обеспечение для своего основного репозитория. [ 25 ]
Отличия от других систем баз данных
[ редактировать ]Валки и Redis популяризировали идею системы, которую можно считать хранилищем и кэшем одновременно. Он был спроектирован так, чтобы данные всегда модифицировались и считывались из основной памяти компьютера, но также сохранялись на диске в формате, непригодном для произвольного доступа к данным. Отформатированные данные восстанавливаются в памяти только после перезагрузки системы.
Valkey также предоставляет модель данных, которая очень необычна по сравнению с системой управления реляционными базами данных (СУБД). Пользовательские команды описывают не запрос, который должен выполнить механизм базы данных, а скорее конкретные операции, которые выполняются над заданными абстрактными типами данных. Поэтому данные должны храниться таким образом, чтобы их можно было впоследствии быстро извлечь. Поиск осуществляется без помощи системы базы данных в форме вторичных индексов, агрегатов или других общих функций традиционных СУБД. Реализация Valkey активно использует системный вызов fork для дублирования процесса, содержащего данные, так что родительский процесс продолжает обслуживать клиентов, в то время как дочерний процесс записывает данные в памяти на диск.
Популярность
[ редактировать ]Согласно ежемесячным рейтингам DB-Engines , Valkey или ее предшественник Redis часто являются наиболее популярными базами данных «ключ-значение» . [ 9 ] Redis занял 4-е место в рейтинге баз данных NoSQL по степени удовлетворенности пользователей и присутствию на рынке на основе отзывов пользователей. [ 40 ] самая популярная база данных NoSQL в контейнерах, [ 41 ] и хранилище данных №4 в 2019 году по рейтингу веб-сайта stackshare.io. [ 42 ] Эта база данных была признана самой любимой базой данных в Stack Overflow опросе разработчиков в 2017, 2018, 2019, 2020 и 2021 годах. [ 43 ]
Поддерживаемые языки
[ редактировать ]Начиная с версии 2.6 Redis, Valkey поддерживает серверные сценарии на языке Lua . [ 44 ]
Многие языки программирования имеют привязки к языкам Redis или Valkey на стороне клиента, в том числе: [ 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 ]
Типы данных
[ редактировать ]Valkey и Redis сопоставляют ключи с типами значений. Важным отличием этих и других структурированных систем хранения является то, что они поддерживают не только строки , но и абстрактные типы данных:
- строк Списки
- Наборы строк (наборы неповторяющихся несортированных элементов)
- Сортированные наборы строк (наборы неповторяющихся элементов, упорядоченные по числу с плавающей запятой, называемому счетом).
- Хэш-таблицы, в которых ключи и значения являются строками.
- HyperLogLogs, используемый для приблизительной оценки размера кратности набора, доступен начиная с Redis 2.8.9 в апреле 2014 года. [ 36 ]
- Поток записей с группами потребителей позволяет хранить несколько полей и строковых значений с автоматической временной последовательностью по одному ключу, доступному начиная с Redis 5.0 в октябре 2018 г. [ 36 ]
- Геопространственные данные благодаря реализации метода геохеширования , доступного начиная с Redis 3.2. [ 48 ]
Тип значения определяет, какие операции (называемые командами) доступны для этого значения. Redis поддерживает высокоуровневые атомарные операции на стороне сервера, такие как пересечение, объединение и различие между наборами, а также сортировку списков, наборов и отсортированных наборов.
Некоторые другие типы данных поддерживаются на основе API модулей Redis. Некоторые из них не лицензируются по лицензии BSD, используемой Valkey: [ 49 ]
- JSON — RedisJSON [ 50 ] реализует ECMA-404 (стандарт обмена данными объектной нотации JavaScript) как собственный тип данных. [ 51 ]
- Поиск — поисковая система для Redis, обеспечивающая вторичное индексирование, полнотекстовый поиск, поиск по векторному сходству и агрегирование. [ 52 ]
- Временной ряд — RedisTimeSeries [ 53 ] реализует структуру данных временных рядов
- Фильтр Блума , фильтр «Кукушка» , эскиз Count–min и Top-K – RedisBloom [ 54 ] реализует набор вероятностных структур данных для Redis
- Другие [ 55 ]
Предыдущие реализации включают в себя:
Упорство
[ редактировать ]Valkey и Redis обычно хранят в памяти весь набор данных. Версии до 2.4 можно настроить на использование того, что они называют виртуальной памятью. [ 59 ] в котором часть набора данных хранится на диске, но эта функция устарела. Устойчивость в Valkey может быть достигнута двумя разными методами. Во-первых, путем создания моментальных снимков, когда набор данных асинхронно переносится из памяти на диск через регулярные промежутки времени в виде двоичного дампа, используя формат файла дампа Redis RDB. В качестве альтернативы можно использовать журналирование , при котором запись каждой операции, изменяющей набор данных, добавляется в файл, доступный только для добавления (AOF), в фоновом процессе. Valkey может перезаписать файл, предназначенный только для добавления, в фоновом режиме, чтобы избежать неопределенного роста журнала. Ведение журнала было введено в версии 1.1 и обычно считается более безопасным подходом.
По умолчанию Valkey записывает данные в файловую систему не реже, чем каждые 2 секунды, при необходимости доступны более или менее надежные параметры. В случае полного сбоя системы при настройках по умолчанию будет потеряно всего несколько секунд данных.
Репликация
[ редактировать ]Valkey поддерживает репликацию мастер-реплика . Данные с любого сервера Valkey могут реплицироваться на любое количество реплик. Реплика может быть главной для другой реплики. Это позволяет Valkey реализовать однокорневое дерево репликации. Реплики можно настроить на прием операций записи, допуская преднамеренные и непреднамеренные несогласованности между экземплярами. Функция публикации-подписки полностью реализована, поэтому клиент реплики может подписаться на канал и получать полный поток сообщений, опубликованных мастеру, в любом месте дерева репликации. Репликация полезна для масштабирования чтения (но не записи) или избыточности данных. [ 60 ]
Производительность
[ редактировать ]Когда надежность данных не требуется, расположение Valkey в памяти позволяет ему работать лучше по сравнению с системами баз данных, которые записывают каждое изменение на диск, прежде чем считать транзакцию зафиксированной. [ 26 ] Valkey работает как единый процесс и является однопоточным или двухпоточным, когда он перезаписывает AOF (файл, предназначенный только для добавления). [ 61 ] Таким образом, один экземпляр Valkey не может использовать параллельное выполнение таких задач, как хранимые процедуры .
Кластеризация
[ редактировать ]Valkey представила кластеризацию в апреле 2015 года с выпуском Redis версии 3.0. [ 62 ] Спецификация кластера . реализует подмножество команд Valkey: доступны все одноклавишные команды, многоклавишные операции (команды, связанные с объединениями и пересечениями) ограничены ключами, принадлежащими одному и тому же узлу, а команды, связанные с операциями выбора базы данных, недоступны [ 63 ] Кластер Valkey может масштабироваться до 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 ] Большинство этих сервисов объявили о переходе на Valkey. [ 3 ]
Пользователи
[ редактировать ]Valkey или Redis используются в таких компаниях, как Twitter, [ 13 ] [ 14 ] [ 70 ] ЭйрБнБ, [ 15 ] Tinder, [ 16 ] Яху, [ 17 ] Adobe, [ 18 ] Хулу, [ 19 ] и Амазонка. [ 20 ]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Бернарди, Стефано (4 января 2011 г.). «Интервью с Сальваторе Санфилиппо, создателем Redis, работающим на Сицилии» . ЕС-Стартапы . Менло Медиа . Проверено 7 апреля 2024 г.
- ^ Хабер, Итамар (15 июля 2015 г.). «Сальваторе Санфилиппо: Добро пожаловать в Redis Labs» . Редис Лабс . Проверено 7 апреля 2024 г.
- ^ Jump up to: а б с Бобби Борисов (29 марта 2024 г.). «Valkey: новая альтернатива Redis, поддерживаемая технологическими гигантами» . Линуксиак . Проверено 6 апреля 2024 г.
- ^ «Linux Foundation запускает сообщество Valkey с открытым исходным кодом» . www.linuxfoundation.org . Проверено 9 апреля 2024 г.
- ^ «Выпуск 7.2.6» . 31 июля 2024 г. Проверено 8 августа 2024 г.
- ^ «Введение в Redis» . redis.io . Проверено 7 апреля 2024 г.
Redis написан на ANSI C и работает в большинстве систем POSIX, таких как Linux, *BSD, OS X, без внешних зависимостей.
- ^ "valkey/КОПИРОВАНИЕ" . Гитхаб. 23 июня 2020 г. Проверено 6 апреля 2024 г.
- ^ «Редис» . Редис . Проверено 22 июля 2023 г.
- ^ Jump up to: а б «DB-Engines Ranking — рейтинг популярности магазинов «ключ-значение»» . DB-двигатели . Проверено 7 апреля 2024 г.
- ^ Кларк, Линдси. «Redis становится самой популярной базой данных на AWS по мере роста развертывания сложных облачных приложений» . www.theregister.com . Проверено 22 июля 2023 г.
- ^ «Instalinks EP 07: Redis™ — самая популярная технология баз данных в памяти» . Инстакластр . Проверено 22 июля 2023 г.
- ^ «Рейтинг DB-движков» . DB-двигатели . Проверено 22 июля 2023 г.
- ^ Jump up to: а б Масштабирование Redis в Twitter , получено 22 июля 2023 г.
- ^ Jump up to: а б Использование Redis в масштабе в Twitter - Рашми Рамеш из Twitter - RedisConf17 - , получено 22 июля 2023 г.
- ^ Jump up to: а б AWS re:Invent 2018: Путь Airbnb от самостоятельного управления Redis к ElastiCache для Redis (DAT319) , получено 22 июля 2023 г.
- ^ Jump up to: а б «Повышение масштабируемой отказоустойчивости Tinder с помощью Amazon ElastiCache | Блог базы данных AWS» . aws.amazon.com . 30 января 2020 г. Проверено 22 июля 2023 г.
- ^ Jump up to: а б AWS re:Invent 2022 — Как Yahoo оптимизирует рабочие нагрузки в памяти с помощью AWS (DAT321) , получено 22 июля 2023 г.
- ^ Jump up to: а б AWS re:Invent 2014 | (SDD402) Подробный обзор Amazon ElastiCache , получено 22 июля 2023 г.
- ^ Jump up to: а б «Кейс-исследование Hulu» . Amazon Веб-сервисы, Inc. Проверено 22 июля 2023 г.
- ^ Jump up to: а б «Пример миграции базы данных 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 г.
- ^ Jump up to: а б Клэберн, Томас. «У Redis есть лицензия на убийство: производитель баз данных с открытым исходным кодом использует собственный код» . www.theregister.com . Проверено 21 марта 2024 г.
- ^ Jump up to: а б "ЛИЦЕНЗИЯ.txt" . Гитхаб . 20 марта 2024 г. Проверено 7 апреля 2024 г.
- ^ Jump up to: а б «Часто задаваемые вопросы: Редис» . Redis.io . Проверено 12 февраля 2022 г.
- ^ «Группы Google» . groups.google.com . Проверено 25 февраля 2022 г.
- ^ Санфилиппо, Сальваторе (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 г.
- ^ Jump up to: а б с «Redis 5.0 уже здесь!» . Редис . 22 октября 2018 года . Проверено 7 апреля 2024 г.
- ^ «Маэстро баз данных Антирез говорит Redis, что ему нужен неструктурированный код для написания жизни, а не структурированный код для управления программным обеспечением» . theregister.com . Проверено 7 апреля 2024 г.
- ^ «Конец приключений Redis —» . antirez.com . Проверено 10 ноября 2020 г.
- ^ «Linux Foundation запускает сообщество Valkey с открытым исходным кодом» . linuxfoundation.org . Проверено 7 апреля 2024 г.
- ^ «Лучшие базы данных NoSQL: отчет G2 Crowd за осень 2015 г.» . G2 Толпа. Архивировано из оригинала 24 августа 2015 г. Проверено 25 августа 2015 г.
- ^ «8 удивительных фактов о реальном внедрении Docker» . Датадог . 13 июня 2018 года . Проверено 7 апреля 2024 г.
- ^ «🏆50 лучших инструментов разработчика 2019 года» . СтекПоделиться . Проверено 28 июля 2020 г.
- ^ «Результаты опроса разработчиков 2021 года: самые любимые, опасные и востребованные базы данных» . Переполнение стека . Обмен стеками . Проверено 23 августа 2021 г.
- ^ «ЭВАЛ – Редис» . redis.io . Проверено 7 апреля 2024 г.
- ^ Jump up to: а б «Редис» . redis.io . Проверено 7 апреля 2024 г.
- ^ "Даниелетети/Дельфириклиент" . Гитхаб . 17 сентября 2022 г. Проверено 7 апреля 2024 г.
- ^ Льюис, BW (5 июля 2015 г.). "rredis: Клиент базы данных ключей/значений Redis" . Комплексная сеть архивов R. Проверено 3 апреля 2019 г.
- ^ «Примечания к выпуску Redis 3.2» . Гитхаб . Проверено 10 марта 2017 г.
- ^ «Обзор лицензирования Redis» . Редис . Проверено 30 сентября 2023 г.
- ^ «RedisJSON — тип данных JSON для Redis» . oss.redis.com . Проверено 7 апреля 2024 г.
- ^ «RedisJSON — тип данных JSON для Redis» . redisjson.io . Проверено 7 апреля 2024 г.
- ^ RediSearch , RediSearch, 30 сентября 2023 г. , получено 30 сентября 2023 г.
- ^ «RedisTimeSeries — структура данных временных рядов для Redis» . oss.redis.com . Проверено 7 апреля 2024 г.
- ^ «RedisBloom — Модуль вероятностных типов данных для Redis» . oss.redis.com . Проверено 7 апреля 2024 г.
- ^ «Модули» . Редис . Проверено 30 сентября 2023 г.
- ^ «RedisGraph — модуль графовой базы данных для Redis» . oss.redis.com . Проверено 7 апреля 2024 г.
- ^ Коган, Лиор (5 июля 2023 г.). «Объявление об окончании срока службы RedisGraph» . Редис . Проверено 30 сентября 2023 г.
- ^ FalkorDB , FalkorDB, 29 сентября 2023 г. , получено 30 сентября 2023 г.
- ^ «Виртуальная память» . Redis.io . Проверено 11 апреля 2019 г.
- ^ «Архив кода Google — долгосрочное хранилище для хостинга проектов Google Code» . code.google.com . Проверено 7 апреля 2024 г.
- ^ «Редис на Raspberry Pi: приключения в чужих землях — <антирез>» . antirez.com . Проверено 7 апреля 2024 г.
- ^ «Примечания к выпуску Redis 3.0» . Гитхаб . Проверено 10 марта 2017 г.
- ^ «Кластерная спецификация» . redis.io . Проверено 10 марта 2017 г.
- ^ «Кластерная спецификация» . redis.io . Проверено 10 марта 2017 г.
- ^ «Кластерное руководство» . redis.io . Проверено 10 марта 2017 г.
- ^ «5 лучших вариантов использования Redis — ObjectRocket» . ОбъектРокет . Рэкспейс. 7 ноября 2017 года . Проверено 7 апреля 2024 г.
- ^ «Memorystore: хранилище данных в памяти» . Гугл облако . Проверено 3 февраля 2023 г.
- ^ «Кэш Azure Redis — облачная служба кэширования Redis — Microsoft Azure» . azure.microsoft.com . Проверено 7 апреля 2024 г.
- ^ «ApsaraDB для Redis: служба баз данных ключевых значений — облако Alibaba» . www.alibabacloud.com . Проверено 7 апреля 2024 г.
- ^ «Как Twitter использует Redis для масштабирования — 105 ТБ ОЗУ, 39 ММ QPS, более 10 000 экземпляров — высокая масштабируемость» . Highscalability.com . Проверено 7 апреля 2024 г.
Дальнейшее чтение
[ редактировать ]- Изабель Дрост и Ян Ленард (29 октября 2009 г.), Happenings: NoSQL Conference, Берлин , The H. Слайды для презентации Redis. Краткое содержание .
- Билли Ньюпорт (IBM): « Развитие модели программирования ключ/значение на более высокий уровень » Конференция Qcon 2009, Сан-Франциско.
- Мишра: « Установите и настройте Redis на сервере Centos/Fedora ».
- Э. Музакитис: « Мониторинг производительности Redis »
Внешние ссылки
[ редактировать ]- Распределенная вычислительная архитектура
- Кэширование базы данных
- Системы управления базами данных
- Бесплатное программное обеспечение, написанное на C.
- Базы данных «ключ-значение»
- Программное обеспечение, поддерживающее сценарии Lua (язык программирования)
- NoSQL
- Программные вилки
- Программное обеспечение, использующее лицензию BSD
- Структурированное хранилище