Ответ
Redis Stack — это расширенная версия Redis, которая включает в себя ядро Redis и набор встроенных модулей для расширенной функциональности.
Ключевые модули Redis Stack:
- RediSearch: Полнотекстовый поиск и вторичное индексирование для данных в Redis.
- RedisJSON: Позволяет хранить, обновлять и получать данные в формате JSON как нативные типы данных Redis.
- RedisTimeSeries: Оптимизирован для хранения и запросов временных рядов (time-series data).
- RedisBloom: Реализует вероятностные структуры данных (Bloom и Cuckoo фильтры, Count-Min Sketch и др.) для эффективной работы с большими наборами данных.
Пример использования RedisJSON:
# Запись JSON-документа
> JSON.SET user:1 $ '{"name":"Alice", "age":30, "city":"London"}'
OK
# Получение поля
> JSON.GET user:1 $.name
""Alice""
# Инкремент числового поля
> JSON.NUMINCRBY user:1 $.age 1
"31"
Почему это важно: Redis Stack объединяет несколько мощных инструментов в одном сервере, упрощая архитектуру и повышая производительность для сценариев, требующих поиска, работы с JSON или временными рядами.
Ответ 18+ 🔞
А, ну это же тот самый случай, когда обычный Redis — это как голый каркас, а Stack — это уже готовый дом со всеми пиздатыми прибамбасами внутри, чтобы не бегать по соседям за инструментами.
Короче, Redis Stack — это если взять ядро обычного Редиса и нахуярить туда кучу встроенных модулей, которые решают конкретные задачи. Не надо ничего отдельно ставить, ковырять, оно всё уже в одном флаконе, готовое к бою.
Вот что там внутри припрятано, самое соковитое:
- RediSearch: Это когда тебе надоело искать ключи по шаблону, а хочется нормальный, блядь, полнотекстовый поиск прямо по данным в редисе. Как в нормальной базе. Индексы, запросы, всё дела.
- RedisJSON: О, это вещь! Раньше ты пихал JSON в строку, потом её вытаскивал, парсил, обновлял, снова сериализовал — пиздец какой геморрой. А теперь можно тупо хранить JSON как нативный тип, и обращаться к полям прямо внутри него. Волшебство, ёпта!
- RedisTimeSeries: Для всяких метрик, показаний с датчиков и прочей хуйни, которая валится с течением времени. Оптимизированно специально под это, чтобы быстро писать и ещё быстрее читать по временным промежуткам.
- RedisBloom: Тут живут хитрые вероятностные структуры данных. Нужно быстро проверить, не встречался ли этот пользователь раньше, но при этом память не жрать как не в себя? Пожалуйста — Bloom Filter. Овердохуища элементов, а памяти — кот наплакал, с небольшой погрешностью.
Смотри, как с RedisJSON жизнь упрощается, просто пиздец:
Раньше бы пришлось городить огород, а теперь:
# Запихнули целый JSON документ одной командой, и он там как родной
> JSON.SET user:1 $ '{"name":"Alice", "age":30, "city":"London"}'
OK
# Достали только имя, даже не трогая весь объект
> JSON.GET user:1 $.name
""Alice""
# Хочу Alice стать на год старше? Без проблем, инкремент прямо в поле!
> JSON.NUMINCRBY user:1 $.age 1
"31"
И в чём, собственно, соль? А в том, что вместо того чтобы ставить кучу отдельных сервисов, которые между собой ебутся по сети, ты получаешь всё в одном месте. Скорость — космос, потому что всё в памяти и в одном процессе. Архитектура проще — не надо думать, как это всё между собой склеить. Для многих задач — просто идеальный, блядь, швейцарский нож.