Skip to content

Commit 3c3eb32

Browse files
authored
Merge pull request #445 from codecrafters-io/TropicolX-patch-80
Add FAQ section to Redis challenge
2 parents c3380cd + 60a3f15 commit 3c3eb32

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

course-definition.yml

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,56 @@ marketing:
4545
difficulty: medium
4646
sample_extension_idea_title: "Persistence"
4747
sample_extension_idea_description: "A Redis server that can read and write .rdb files"
48+
frequently_asked_questions:
49+
- question_markdown: "What exactly will I build?"
50+
answer_markdown: |-
51+
You'll start by implementing the core building blocks of every Redis server:
52+
* Binding to a TCP port and listening for connections
53+
* Responding to basic commands like `PING` and `ECHO`
54+
* Parsing the Redis Protocol (RESP) from client requests
55+
* Handling multiple clients concurrently
56+
* Implementing the `SET` and `GET` commands to store and retrieve data.
57+
58+
At this stage, your Redis will already feel real, and you'll be able to interact with the official `redis-cli`.
59+
60+
As you progress, you'll implement advanced features like:
61+
* Redis replication
62+
* RDB persistence
63+
* Atomic transactions
64+
* ... and more
65+
66+
At the end, you'll have a GitHub repo to show off.
67+
68+
- question_markdown: "What exactly will I learn?"
69+
answer_markdown: |-
70+
In the first 7 stages, you'll learn:
71+
* How a TCP server binds to a port and accepts connections
72+
* What the Redis Protocol (RESP) is, and how to parse/encode messages
73+
* How to handle multiple clients concurrently
74+
* How to implement commands like `PING`, `ECHO`, `SET`, and `GET`
75+
* How to manage a key-value store with automatic key expiry
76+
77+
In the advanced stages, you'll discover new programming ideas, such as master-replica synchronization, atomic transactions, and specialized data structures like sorted sets and geospatial indices.
78+
79+
As your code gets complex, you'll be forced to structure and refactor it - to avoid regressions and to make adding new features easier.
80+
81+
- question_markdown: "Why should I build such a project?"
82+
answer_markdown: |-
83+
Building your own Redis blends network programming, concurrent computing, and system design. If you've mostly built websites or apps, this project takes you a layer deeper to understand how caching and distributed systems work.
84+
85+
You’ll also be building a core piece of infrastructure that applications rely on, such as [Twitter's timeline](https://blog.x.com/engineering/en_us/topics/infrastructure/2017/the-infrastructure-behind-twitter-scale#cache) and [Uber's integrated cache](https://www.uber.com/en-GB/blog/how-uber-serves-over-40-million-reads-per-second-using-an-integrated-cache/).
86+
87+
Beyond technical depth, there's something uniquely satisfying about understanding a tool used by millions of developers every day. You'll come out of it as a more confident and interesting developer.
88+
89+
- question_markdown: "What are the prerequisites for this challenge?"
90+
answer_markdown: |-
91+
You should be comfortable writing code in any one language and using Git. No prior experience with databases or network programming is required.
92+
93+
Most learners pick up required concepts (e.g, TCP servers) as they go.
94+
95+
What matters most is curiosity and persistence. You'll develop intuition by exploring, debugging, and discovering solutions yourself.
96+
97+
While we will make it extremely simple to get started, don't expect this to be a follow-along tutorial.
4898
testimonials:
4999
- author_name: "Charles Guo"
50100
author_description: "Software Engineer, Stripe"

0 commit comments

Comments
 (0)