Skip to content

barunslick/codecrafters-redis-c

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

62 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 Building Redis in C (CodeCrafters Challenge)

progress-banner

The challenge is structured in stages — from handling basic commands to implementing persistence, replication, and streams. Below is a checklist to track my progress through the stages.

Note: I am using this challenge as a chance to catch up with C, so code will be rough around the edges.


✅ Base Stages

  • Introduction
  • Repository Setup
  • Bind to a port
  • Respond to PING
  • Respond to multiple PINGs
  • Handle concurrent clients
  • Implement the ECHO command
  • Implement the SET & GET commands
  • Expiry
  • Base stages complete!

💾 RDB Persistence

  • RDB file config
  • Read a key
  • Read a string value
  • Read multiple keys
  • Read multiple string values
  • Read value with expiry
  • Extension complete!

🔁 Replication

  • Configure listening port
  • The INFO command
  • The INFO command on a replica
  • Initial Replication ID and offset
  • Send handshake (1/3)
  • Send handshake (2/3)
  • Send handshake (3/3)
  • Receive handshake (1/2)
  • Receive handshake (2/2)
  • Empty RDB Transfer
  • Single-replica propagation
  • Multi Replica Command Propagation
  • Command Processing
  • ACKs with no commands
  • ACKs with commands
  • WAIT with no replicas
  • WAIT with no commands
  • WAIT with multiple commands

📚 Streams

  • The TYPE command
  • Create a stream
  • Validating entry IDs
  • Partially auto-generated IDs
  • Fully auto-generated IDs
  • Query entries from stream
  • Query with -
  • Query with +
  • Query single stream using ID range
  • Query multiple streams using ID range
  • Blocking reads
  • Blocking reads without timeout
  • Blocking reads using $

🔐 Transactions

TODO: Add sections


References

🗓️ Last updated: March 7, 2025 💡 Challenge link

About

Redis in C

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published