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 進行效能驗證。適合想深入資料庫底層與網路程式設計的開發者。

參賽天數 25 天 | 共 25 篇文章 | 2 人訂閱 訂閱系列文 RSS系列文
DAY 21

Day 21:背景 AOF 重寫 (BGREWRITEAOF) 的 Copy-on-Write 與 Go 實作

AOF 持久化是追加模式,也就是說系統跑越久,AOF 檔案就會越大。如果同一個 Key 被改了一萬次,AOF 就老老實實記下一萬條指令。 但實際上,歷史紀錄不重...

2026-09-07 ‧ 由 tim1101 分享
DAY 22

Day 22:RDB (Redis Database) 快照持久化原理與binary serialization設計

前幾天我弄好了 AOF 追加日誌。AOF 雖然資料安全,但缺點就是檔案有夠大,資料一多,重啟時 replay 指令會跑到讓人想睡覺。 所以 Redis 還有另一...

2026-09-08 ‧ 由 tim1101 分享
DAY 23

Day 23:實作 RDB 保存與啟動時的 AOF/RDB 自動加載資料恢復

昨天先把 RDB 的資料模型定下來,今天就直接在 code/db/rdb.go 補 SaveRDB 和 LoadRDB,順便把 Server 啟動時的資料恢復流...

2026-09-09 ‧ 由 tim1101 分享
DAY 24

Day 24:記憶體淘汰機制(Eviction Policy)LRU 演算法原理解析與實作

記憶體很貴,如果一直狂寫資料都不清理,遲早會遇到 OOM 爆掉。 為了避免這慘況,Redis 有套記憶體淘汰機制(Eviction Policy)。當記憶體快滿...

2026-09-10 ‧ 由 tim1101 分享
DAY 25

Day 25:記憶體淘汰機制(Eviction Policy)LFU 演算法原理解析與實作

昨天弄好了 LRU,但 LRU 其實有個坑:如果一個 Key 過去一年被讀了一百萬次,但剛好這幾分鐘沒被讀;另一個沒什麼價值的 Key 剛好被寫入又讀了一次。L...

2026-09-11 ‧ 由 tim1101 分享