Redis — розподілене сховище пар ключ-значення, які зберігаються в оперативній пам'яті, з можливістю забезпечувати довговічність зберігання на бажання користувача. Це програмне забезпечення з відкритим початковим кодом написане на ANSI C. Розробка Redis фінансується VMware. Код проєкту поширювався в рамках ліцензії BSD, але з версії 7.4 був змінений на Redis Source Available License або SSPL
Redis надає схожі на Memcached функції для зберігання даних в форматі ключ/значення, розширені підтримкою структурованих даних, таких як списки, хеші і множини. На відміну від Memcached, Redis забезпечує постійне зберігання даних на диску і гарантує збереження БД у разі аварійного завершення роботи. Клієнтські бібліотеки доступні для більшості популярних мов, включаючи Perl, Python, PHP, Java, Ruby і Tcl.
Є підтримка транзакцій, що дозволяють виконати за один крок групу команд, гарантуючи несуперечність і послідовність (команди від інших запитів не можуть вклинитися) виконання заданого набору команд, а в разі проблем дозволяючи відкотити зміни. Всі дані у повному обсязі кешуються в оперативній пам'яті. Зберігання всіх даних в оперативній пам'яті дозволяє досягнути значної продуктивності: при тестуванні Redis на сервері з CPU Xeon X3320 2.5 ГГц вдалося забезпечити 110000 операцій запису і 81000 операцій читання за секунду.Релиз БД Redis 2.6 // opennet.ru 24.10.2012
Для управління даними підтримуються такі команди, як інкремент/декремент, стандартні операції над списками і множинами (об'єднання, перетин), перейменування ключів, множинні вибірки та функції сортування. Підтримується два режими зберігання: періодична синхронізація даних на диск і ведення на диску логу змін. У другому випадку гарантується повне збереження всіх змін. Можлива організація master-slave реплікації даних на кілька серверів, здійснювана в неблокуючому режимі. Доступний також режим обміну повідомленнями «публікація/підписка», при якому створюється канал, повідомлення з якого поширюються клієнтам, що підписані на канал.
Підтримувані мови Мови, для яких існують прив'язки бібліотек Redis:
ActionScript C C++ C# Clojure Common Lisp Erlang Go Haskell haXe Io Java Node.js Lua Objective-C Perl PHP Pure Data Python Ruby Scala Smalltalk Tcl.
Від версії 2.6 у Redis вбудований інтерпретатор Lua і підтримуються скрипти на мові Lua, що працюють на стороні сервера.
Модель даних На зовнішньому рівні абстракції, модель даних в Redis це асоціативний масив в якому ключі відображаються в значення. Основною відмінністю між Redis та іншими базами такого типу в тому, що значення словника не обмежені рядковими типами. На додачу до рядків підтримуються наступні абстрактні типи даних:
Списки рядків Множини рядків (невпорядкований набір неповторюваних елементів) Впорядковані множини рядків (набори неповторюваних елементів впорядкованих за пов'язаним значенням з рухомою комою) Хеші в яких ключі і значення є рядками
Тип значення визначає які операції є доступними для цього значення. Redis підтримує високорівневі атомні операції на стороні сервера, такі як перетин, об'єднання та різниця між множинами та списками.
Персистентність Redis зазвичай тримає всі дані в оперативній пам'яті. До версії 2.4 існувала можливість налаштувати роботу з віртуальною пам'яттюДокументація Redis «Virtual Memory» , redis.io але зараз це не рекомендовано. Персистентність досягається двома шляхами, перший з яких називається знімкування (), і є напівперсистентним режимом довговічності, в якому дані час від часу асинхронно передаються з пам'яті на диск. З версії 1.1 безпечнішою альтернативою є файл який можна лише доповнювати (журнал транзакцій), і в який доповнюється всіма операціями що модифікують дані в пам'яті. Redis має можливість переписувати файл з нуля в фоновому режимі для того щоб уникнути нескінченного росту його довжини.
Реплікація і розподіленість Redis підтримує реплікацію master-slave. Дані з будь-якого сервера Redis можуть реплікуватись довільною кількістю разів. Реплікація корисна для масштабування читання (але не запису) чи надлишковості даних.
Починаючи з версії 3.0, що вийшла навесні 2015, з базою інтегрований Redis Cluster для створення розподілених сховищ. Redis Cluster дозволяє розгорнути конфігурацію в якій дані автоматично розподіляються між декількома вузлами Redis. Можливе створення відмовостійких конфігурацій, при яких дані дублюються на різних вузлах і вихід одного вузла з ладу не призводить до зупинки,
Продуктивність Коли в довговічності даних немає потреби, розміщення даних в пам'яті допомагає Redis показувати набагато кращі результати ніж СУБД які записують кожну зміну на диск, перш ніж вважають транзакцію завершеною. Між операціями читання та запису немає помітної різниці в швидкості.
Ліцензування У березні 2025, починаючи з випуску 7.4 Redis перейшов з ліцензії BSD на використання ліцензій RSALv2 (Redis Source Available License v2) і SSPLv1 (Server Side Public License v1), які призводять до дискримінації окремих категорій користувачів, що не дозволяє вважати їх відкритими чи вільними. За своїми цілями обидві ліцензії схожі одна на одну, а відмінності зводяться до того, що ліцензія SSPL заснована на копілефт ліцензії AGPLv3, а ліцензія RSAL заснована на пермісивній ліцензії BSD. Ліцензія RSAL дозволяє використовувати, змінювати, розповсюджувати та інтегрувати код до програм, за винятком випадків, коли ці програми є комерційними або використовуються для надання керованих платних сервісів. Ліцензія SSPL додатково містить вимогу поставки під тією самою ліцензією не лише коду самої програми, але й сирцевих текстів усіх компонентів, залучених до надання хмарного сервісу.
У відповідь на таку зміну в квітні 2025 відбувсяValkey 8.1: Continuing to Deliver Enhanced Performance and Reliability реліз СКБД Valkey 8.1, форку Redis після її переходу на власницьку ліцензію. Проект розвивається на нейтральному майданчику під заступництвом організації Linux Foundation за участю розробників з таких компаній, як Amazon, Google, Oracle, Ericsson та Snap. До розробки Valkey приєднався Маделін Олсон (Madelyn Olson), колишній мейнтейнер Redis. Код проекту написаний мовою C та поширюється під ліцензією BSD.
Дивись також NoSQL Mnesia Memcached MemcacheDB Membase Cassandra
Примітки
Jeremy Zawodny, Redis: Lightweight key/value Store That Goes the Extra Mile , Linux Magazine, August 31, 2009 Isabel Drost and Jan Lehnard (29 October 2009), Happenings: NoSQL Conference, Berlin , The H. Slides for the Redis presentation. Summary . Billy Newport (IBM): «Evolving the Key/Value Programming Model to a Higher Level » Qcon Conference 2009 San Francisco.
Посилання Офіційний сайт проєкту Audio Interview with Salvatore Sanfillipo on The Changelog podcast Extensive Redis tutorial with real use-cases by Simon WIllison PHP programming examples for Redis Predis vs PHP5-Redis Extension. Порівняльний тест.