iT邦幫忙

鐵人檔案

2026 iThome 鐵人賽
回列表
Software Development

手刻 Redis:用 Go 從零打造高效能高併發的記憶體資料庫 系列

本系列將以 Go 語言從零手寫一個相容 Redis RESP 協定的高併發記憶體資料庫,不只學會「用」Redis,更深入其底層運作。30 天內逐步完成:RESP 協定解析器、高併發 TCP 伺服器、String/List/Hash/Set/Sorted Set 五大資料結構(含手寫跳躍表)、TTL 過期與記憶體淘汰(LRU/LFU)、AOF/RDB 持久化、主從複製,以及事務、Pub/Sub、Pipeline 等進階機制,最後以 redis-benchmark 與 pprof 進行效能驗證。適合想深入資料庫底層與網路程式設計的開發者。

參賽天數 4 天 | 共 4 篇文章 | 1 人訂閱 訂閱系列文 RSS系列文
DAY 1

Day 01:Redis Clone 專案規劃與 Go 開發環境初始化

為什麼要自己寫一個 Redis? Redis 很多人都用過,拿來做快取、工作佇列、分散式鎖都很順手。但我一直覺得只停在「會用」有點可惜,尤其是它背後的網路 I/...

2026-08-18 ‧ 由 tim1101 分享
DAY 2

Day 02:實作高併發 TCP Socket 伺服器與 Graceful Shutdown

寫資料庫引擎之前,網路層得先站穩。Redis 之所以快,底層事件模型佔了很大一部分;我雖然不用在 Go 裡手刻 epoll,但還是得先做出一個可以同時處理多個...

2026-08-19 ‧ 由 tim1101 分享
DAY 3

Day 03:RESP 協定介紹與 Parser 基礎架構設計

要自己刻 Redis,第一步當然是要讓 Server 聽得懂 Client 在講什麼。Redis 客戶端與伺服器之間進行通訊時,使用的是一種名為 RESP (R...

2026-08-20 ‧ 由 tim1101 分享
DAY 4

Day 04:實作 RESP Parser - 解析 Simple Strings, Errors 與 Integers

昨天把 Parser 的骨架搭好了,今天就直接來寫解析邏輯吧。 我先挑比較軟的柿子吃,從 RESP 裡三種單行資料型態開始:Simple Strings (簡單...

2026-08-21 ‧ 由 tim1101 分享