Об этом проекте

Node-Redis — официальный Redis-клиент для Node.js, устанавливается командой `npm install redis`. Основной пакет включает поддержку модулей Redis Stack; модульные пакеты также публикуются отдельно: `@redis/client` (базовый клиент и кластер), `@redis/bloom`, `@redis/json`, `@redis/search`, `@redis/time-series` и `@redis/entraid` для аутентификации по токенам Microsoft Entra ID. Клиенты создаются с помощью `createClient()` и поддерживают URL-адреса подключения `redis://` и `rediss://`, отдельные параметры, UNIX-сокеты и TLS. `isReady` и `isOpen` отображают состояние соединения. Клиент является EventEmitter и генерирует события `connect`, `ready`, `end`, `error`, `reconnecting`, `terminated`, `invalidate`, а также события шардированных каналов; наличие обработчика `error` обязательно, чтобы избежать завершения процесса. API охватывает все встроенные команды Redis, доступные как в исходных именах (`HSET`), так и в camelCase-алиасах (`hSet`), при этом модификаторы команд передаются как объекты JavaScript, а ответы преобразуются в нативные структуры (например, хэши становятся объектами). Бинарные данные поддерживаются через `withTypeMapping`, сопоставляющий blob-строки RESP с `Buffer`. Неизвестные команды можно отправлять с помощью `sendCommand()`. Другие документированные возможности включают: - Транзакции через `multi()`/`exec()` и оптимистичную блокировку с помощью `watch()`. - Pub/Sub, включая шардированные каналы. - Асинхронные итераторы для `SCAN`, `HSCAN`, `SSCAN` и `ZSCAN` с опциями `MATCH`, `COUNT` и `TYPE`. - Автоматическую пайплайнизацию команд, отправленных в одном тике цикла событий. - `RedisClientPool` в v5 для пулов изолированных соединений, полезных для блокирующих команд. - Кэширование на стороне клиента с помощью сервера поверх RESP3 с настраиваемым TTL, лимитами записей и вытеснением LRU/FIFO. - Специальные руководства по развертыванию Redis Cluster и Sentinel. - Операции compare-and-set/delete (CAS/CAD), представленные в Redis 8.4, а также локальный помощник XXH3 `digest`, требующий необязательную peer-зависимость `@node-rs/xxhash`. - Инструментирование метрик OpenTelemetry через `OpenTelemetry.init()` (требуется `@opentelemetry/api` и настроенный SDK), а также публикацию телеметрии через `diagnostics_channel` Node.js для интеграции с APM. - Поддержку программируемости для Lua-скриптов и функций. README содержит примеры для ESM и CommonJS, сведения о конфигурации клиента и руководства по миграции с v3 на v4 и с v4 на v5. Среди заметных изменений API в v5 — `close()` вместо `quit()` и `destroy()` вместо `disconnect()`. Репозиторий распространяется под лицензией MIT.