RediSpeed is a custom implementation of Redis, built from scratch in C++. This project aims to create a high-performance, in-memory data structure store that can be used as a database, cache, and message broker.
RediSpeed is an educational project that seeks to recreate the core functionality of Redis. By building my own Redis-like system, I aim to gain a deeper understanding of in-memory databases, concurrent programming, and network protocols.
(Instructions for building and running the project will be added as development progresses)
-
Basic Functionality
-
Implement a basic TCP server -
Support response for multiple PINGs -
Handling concurrent clients- Implement a thread pool
- Switch to an event loop
- Implement debugging capabilities (ECHO command)
- Create a simple key-value store for strings (GET, SET commands)
- Support for key expiry
-
-
Replication
- Server info retrieval (INFO command)
- Sending and receiving handshake
- ACK and WAIT command support
-
RDB Persistence
- Reading single keys
- Reading multiple keys
- Reading values with expiry
-
Transactions
- Add functionality to increment values (INCR)
- MULTI and EXEC commands to start transactions
- Execution of empty transactions
- Execution of transactions containing mutliple commands
- Failure handling
- Support multiple concurrent transactions
-
Streams
- Creation of Redis streams (XADD command)
- Validation and auto-generation of entry IDs
- Static stream query (XRANGE)
- Real-time stream query (XREAD)
- Add blocking support for XREAD
As this is a personal educational project, contributions are not currently being accepted. However, feedback and suggestions are always welcome!
RediSpeed is not affiliated with or endorsed by Redis Labs. This is an independent, educational project aimed at learning and exploring the concepts behind Redis-like systems.