Database
NoSQL
Redis
Why Redis is so Fast?

Why Redis is so Fast?

Redis is often hailed as the most versatile modern database. While heavily used as a cache, it serves as a robust Message Broker, Streaming engine, and more.

This course explores Redis internals by actually reimplementing its core features in Node.js. It answers some of the most common questions:

  • Why is Redis so fast?
  • How can it handle a large number of TCP connections while being single-threaded?

What makes Redis unique?

  • In-Memory Performance: All Redis data resides in memory, allowing for sub-millisecond response times.
  • Rich Data Structures: Supports strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes, and streams.
  • Atomicity: Redis operations are atomic, meaning multiple commands can be executed as a single unit without interference.
  • Persistence: While primarily in-memory, Redis provides options to persist data to disk (RDB and AOF).
  • High Availability: Built-in replication, Sentinel for failover, and Redis Cluster for automatic sharding.

Redis Architecture & The End-to-End Flow

To understand Redis internals, you must visualize the life of a command. Every request follows a strict, single-threaded path through the system.

The Command Lifecycle (VERY IMPORTANT)

This is the "Golden Path" we will reimplement in this course:

Client → TCP → Event Loop → Command Queue → Parser → Execution → Data Store → Response

[!IMPORTANT] Because Redis is single-threaded, each step in this flow must be non-blocking. If the Parser or Execution takes too long, the Event Loop stops, and all other Clients are blocked.


Redis Architecture

Redis traditionally operates on a single-threaded event loop (using multiplexing with epoll or kqueue). This avoids the overhead of context switching and locking in multi-threaded systems.

[!NOTE] Since Redis 6.0, multi-threading was introduced for I/O operations (reading and writing to the socket), but the core command execution remains single-threaded to maintain simplicity and atomicity.

Common Use Cases

Use CaseDescription
CachingReducing database load by storing frequently accessed data.
Session ManagementStoring user sessions for web applications.
Real-time AnalyticsCounting events, tracking page views, or processing logs.
LeaderboardsUsing Sorted Sets to maintain real-time scoring.
Message QueuesImplementing Pub/Sub or Streams for microservices communication.
Rate LimitingControlling API usage based on IP or user ID.

Why Database Engineers use Redis?

Database engineers leverage Redis to fill the gap where traditional RDBMS or even NoSQL databases hit latency walls. It acts as a "buffer" or "speed-up" layer, and in some cases (with persistence enabled), serves as the primary fast-access database.