# redis/node-redis

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/redis-node-redis).**

17,482 stars · 1,929 forks · TypeScript · mit

## Links

- GitHub: https://github.com/redis/node-redis
- Homepage: https://redis.js.org/
- awesome-repositories: https://awesome-repositories.com/repository/redis-node-redis.md

## Topics

`node-redis` `nodejs` `redis` `redis-client` `redis-cluster`

## Description

This project is a database driver for Node.js applications designed to interface with Redis. It provides structured access to data stores, enabling the execution of commands, management of data structures, and the implementation of atomic transaction processing.

The client distinguishes itself through native support for the binary-safe serialization protocol and a promise-based command pipeline that groups operations to minimize latency. It includes a dedicated manager for distributed environments that handles node discovery and request routing, alongside an event-driven messaging system that allows for real-time communication through channel subscription and publishing.

The library covers a broad range of application patterns, including caching strategies to reduce database load and connection resilience mechanisms that utilize exponential backoff to maintain availability during network instability. It also supports asynchronous collection traversal to process large datasets without blocking the server. The project is distributed as a package for Node.js environments and provides a comprehensive interface for managing both standalone and clustered database deployments.

## Tags

### Data & Databases

- [Redis Drivers](https://awesome-repositories.com/f/data-databases/asynchronous-database-drivers/redis-drivers.md) — Provides a comprehensive interface for interfacing with Redis databases, supporting asynchronous execution and cluster topologies.
- [Cluster Node Management](https://awesome-repositories.com/f/data-databases/cluster-node-management.md) — Handles node discovery, request routing, and connection resilience across distributed cluster topologies.
- [Redis Clients](https://awesome-repositories.com/f/data-databases/redis-clients.md) — Scales database operations by connecting to distributed clusters and automatically routing requests across nodes.
- [Atomic Transactions](https://awesome-repositories.com/f/data-databases/database-management-systems/database-systems-management/connection-transaction-management/atomic-transactions.md) — Executes multiple database operations as a single atomic unit to ensure data consistency.
- [Query Caching Strategies](https://awesome-repositories.com/f/data-databases/query-caching-strategies.md) — Reduces database load and improves response times by caching query results within the application layer.
- [Asynchronous Iterators](https://awesome-repositories.com/f/data-databases/collection-iterators/asynchronous-iterators.md) — Streams large datasets in chunks to prevent memory exhaustion and avoid blocking the database server.
- [Binary Protocols](https://awesome-repositories.com/f/data-databases/data-serialization-formats/binary-serialization-protocols/binary-protocols.md) — Exchanges data using a modern binary-safe protocol to ensure accurate type mapping and efficient communication.

### Web Development

- [Node.js Clients](https://awesome-repositories.com/f/web-development/restful-api-clients/node-js-clients.md) — Acts as a database connector for Node.js applications using native promises and modern serialization protocols.

### Software Engineering & Architecture

- [Asynchronous Pipelines](https://awesome-repositories.com/f/software-engineering-architecture/command-pipelines/request-pipelines/asynchronous-pipelines.md) — Groups multiple asynchronous operations into single network requests to minimize latency and maximize throughput.
- [Event Driven Messaging](https://awesome-repositories.com/f/software-engineering-architecture/event-driven-messaging.md) — Enables real-time event-driven architectures through channel subscription, message publishing, and binary data handling.
- [Event-Driven Architectures](https://awesome-repositories.com/f/software-engineering-architecture/event-driven-architectures.md) — Utilizes a push-based messaging system for real-time notifications and asynchronous data streams.

### Networking & Communication

- [Publish-Subscribe Messaging](https://awesome-repositories.com/f/networking-communication/communication-platforms-services/messaging-notification-systems/messaging-services/message-broker-infrastructure/publish-subscribe-messaging.md) — Implements event-driven architectures by publishing and subscribing to message channels for instant communication.
- [Connection Management Strategies](https://awesome-repositories.com/f/networking-communication/connection-management-strategies.md) — Maintains consistent database availability by automatically retrying dropped connections using exponential backoff.
- [Cluster Discovery Mechanisms](https://awesome-repositories.com/f/networking-communication/distributed-systems-p2p/distributed-systems-coordination/cluster-discovery-mechanisms.md) — Maintains an internal map of distributed nodes to route commands automatically and ensure high availability.
