Об этом проекте
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.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.