Ответ
Преимущества Redis:
- Высокая производительность: Данные хранятся в оперативной памяти (in-memory), что обеспечивает скорость в микросекундах.
- Богатые структуры данных: Поддерживает строки, хэши, списки, множества, отсортированные множества, битовые массивы, HyperLogLogs, потоки.
SET user:1000 "John" HSET user:1001 name "Alice" age 30 LPUSH tasks "task1" ZADD leaders 100 "player1" - Атомарные операции: Все команды атомарны, что упрощает реализацию счетчиков, блокировок, очередей.
- Продвинутые функции: TTL (время жизни ключей), публикация/подписка (Pub/Sub), транзакции (MULTI/EXEC), Lua-скриптинг.
- Масштабируемость: Поддержка репликации (master-slave) и кластеризации (автоматическое шардирование с Redis Cluster).
Недостатки и ограничения:
- Ограничение объемом RAM: Стоимость хранения больших объемов данных высока. Данные должны "помещаться" в память.
- Отсутствие сложных запросов: Нет JOIN, агрегаций, сложных WHERE-условий как в реляционных СУБД.
- Персистентность — компромисс: Механизмы сохранения на диск (RDB snapshots, AOF log) могут влиять на производительность или приводить к потере данных при сбое.
- Single-threaded ядро: Команды выполняются последовательно, что может стать узким местом для CPU-интенсивных операций.
Типичные сценарии использования: Кэширование, сессии, лидерборды, очереди задач (на списках), rate limiting, геопространственные данные.