Що таке Redis і навіщо він потрібен?
Стаття також доступна російською (перейти до перегляду).
Redis (скорочено від REmote DIctionary Server) є однією з найпопулярніших відкритих систем управління даними типу ключ-значення. Ця система використовується для різноманітних завдань і має безліч застосувань завдяки своїй швидкості та надійності. Розглянемо, що таке Redis, для чого він використовується і які основні функції надає.
Redis є відкритою системою управління даними, розробленою у 2009 році Сальватором Санфіліппо. Основна ідея полягає у тому, щоб надати швидкий інтерфейс для роботи з даними. Кожен ключ у пов'язаний з певним значенням, і ці дані зберігаються у пам'яті комп'ютера, що дозволяє отримувати доступ до них надзвичайно швидко.
Redis позиціонується як сервер кешування, але його можливості виходять далеко за межі цієї ролі. Його також можна експлуатувати як базу даних, систему повідомлень, робочу пам'ять для інших додатків та навіть як координатор для розподілених систем.
Для чого використовується Redis?
Систему застосовують у різних областях завдяки унікальним можливостям. Розглянемо деякі з популярних сценаріїв використання
Кешування
Redis підходить для реалізації інвентарного кешування в пам'яті з високою доступністю. Він дозволяє зменшити затримки доступу до даних, збільшити пропускну здатність та полегшити навантаження на реляційну або NoSQL базу даних і додаток. Система може обслуговувати запити до часто запитуваних об'єктів з відповідями менше однієї мілісекунди та може легко масштабуватися для роботи з вищими навантаженнями, не збільшуючи витрат на бекенд. Кешування результатів запитів до бази даних, постійних сесій, вебсторінок і часто застосовуваних об'єктів (зображень, метаданих, файлів) — популярні приклади використання Redis.
Чат, месенджери
Redis підтримує Pub/Sub з можливістю використання шаблонного зіставлення і різноманітні структури даних: списки, впорядковані множини та хеші. Це дозволяє системі підтримувати високопродуктивні чат-кімнати, потоки коментарів у реальному часі, стріми соціальних медіа та серверну взаємодію. Структура даних Redis List дозволяє легко реалізувати чергу. Списки працюють надійно і безпечно, і дозволяють додаткам чекати на нові дані або обробляти їх у правильному порядку. Це особливо корисно для створення черги повідомлень або циклічного переліку даних.
Лідерборди в іграх
Redis користується популярністю серед розробників ігор, які хочуть створити лідерборди в реальному часі. Для цього використовують структуру даних Sorted Set, яка надає унікальності елементам і водночас підтримує впорядкування рейтингового списку. Створювати список в реальному часі легко, просто оновлюючи бал користувача при кожній зміні. Також можна використовувати впорядковані множини для роботи з даними у формі часових рядів за допомогою міток часу.
Збереження сесій
Redis як сховище даних в пам'яті з високою доступністю і постійністю є популярним вибором серед розробників додатків. Систему застосовують для збереження й управління даними сесій з метою масштабування інтернет-застосунків. Вона надає мілісекундну затримку, масштаб і надійність, необхідні для управління даними сесій. Серед них: профілі користувачів, облікові дані, стан сесії та персоналізація користувача.
Стрімінг медіа
Redis пропонує швидке сховище даних в пам'яті для потужних сценаріїв. Систему можна використовувати для зберігання метаданих профілів користувачів і історії перегляду, інформації/токенів аутентифікації для мільйонів користувачів і файлів маніфестів для можливості потокової передачі відео на мільйони мобільних та десктопних пристроїв одночасно.
Геопросторові дані
Redis пропонує спеціалізовані вбудовані структури даних і оператори для управління геопросторовими даними в реальному часі на велику відстань і швидкість. Команди GEOADD, GEODIST, GEORADIUS і GEORADIUSBYMEMBER для зберігання, обробки та аналізу геопросторових даних в реальному часі роблять процес легким і швидким. Можна використовувати систему для додавання локалізованих функцій.
Машинне навчання
Сучасні додатки, орієнтовані на дані, потребують машинного навчання для швидкої обробки масивного обсягу, різноманітності й швидкості даних та автоматизації прийняття рішень. Для виявлення шахрайства в іграх і фінансових послугах, процесу вибору в сервісах дейтингу чи поїздок, можливість обробки живих даних і прийняття рішень за декілька десятків мілісекунд має велике значення. Redis надає швидке сховище даних в пам'яті для розробки, навчання і впровадження моделей машинного навчання.
Аналітика в реальному часі
Redis може використовуватися разом з потоковими рішеннями Apache Kafka та Amazon Kinesis, як сховище даних в пам'яті для введення, обробки й аналізу даних в реальному часі з затримкою менше однієї мілісекунди. Система є ідеальним вибором для сценаріїв аналітики в реальному часі. Це може бути аналітика соціальних медіа, персоналізація та Інтернет речей.
Основні функції
Redis надає низку ключових функцій, які роблять його настільки корисним:
-
зберігає дані у пам'яті, що робить доступ до них надзвичайно швидким;
-
використовує просту структуру ключ-значення, що спрощує роботу з даними;
-
підтримує ряд типів даних, серед яких рядки, хеші, списки, множини та багато інших;
-
дозволяє групувати операції в транзакції для атомарності;
-
підтримує механізм для створення системи обміну повідомленнями;
-
може бути розгорнутий у режимі кластера для забезпечення високої доступності й масштабованості;
-
має механізми резервного копіювання і відновлення даних для забезпечення надійності.
Гнучкі структури даних
Redis підтримує різноманітні структури даних, що дозволяє використовувати його для різних типів додатків. До підтримуваних типів даних у Redis входять:
-
рядки — це текстові або двійкові дані розміром до 512 МБ;
-
списки — колекції рядків, впорядковані у порядку додавання;
-
множини — неупорядковані колекції рядків, придатні до роботи з операціями пересічення, об'єднання та порівняння з іншими типами множин;
-
сортовані множини — впорядковані за значенням;
-
хеш-таблиці — структури даних для зберігання списків полів і значень, які ідеально підходять для структурування інформації;
-
бітові масиви — тип даних, який дозволяє виконувати операції на рівні бітів;
-
HyperLogLog — імовірнісні структури даних для оцінки кількості унікальних елементів в наборі даних;
-
потоки — черги повідомлень із структурою журналів даних;
-
просторові дані — записи карт на основі довготи/широти для роботи з географічними даними;
-
JSON — напівструктурований об'єкт зі вкладеною структурою іменованих значень, який підтримує числа, рядки, масиви та інші об'єкти.
Redis — це потужний інструмент для роботи з даними, який відрізняється високою швидкістю та надійністю. Його використовує велика кількістю розробників і компаній по всьому світу. Неважливо, для чого застосовується система: кешування, створення системи повідомлень або для іншої мети, він завжди готовий забезпечити швидкий та надійний доступ до даних.