本系列將以 Go 語言從零手寫一個相容 Redis RESP 協定的高併發記憶體資料庫,不只學會「用」Redis,更深入其底層運作。30 天內逐步完成:RESP 協定解析器、高併發 TCP 伺服器、String/List/Hash/Set/Sorted Set 五大資料結構(含手寫跳躍表)、TTL 過期與記憶體淘汰(LRU/LFU)、AOF/RDB 持久化、主從複製,以及事務、Pub/Sub、Pipeline 等進階機制,最後以 redis-benchmark 與 pprof 進行效能驗證。適合想深入資料庫底層與網路程式設計的開發者。
為什麼要自己寫一個 Redis? Redis 很多人都用過,拿來做快取、工作佇列、分散式鎖都很順手。但我一直覺得只停在「會用」有點可惜,尤其是它背後的網路 I/...
寫資料庫引擎之前,網路層得先站穩。Redis 之所以快,底層事件模型佔了很大一部分;我雖然不用在 Go 裡手刻 epoll,但還是得先做出一個可以同時處理多個...
要自己刻 Redis,第一步當然是要讓 Server 聽得懂 Client 在講什麼。Redis 客戶端與伺服器之間進行通訊時,使用的是一種名為 RESP (R...
昨天把 Parser 的骨架搭好了,今天就直接來寫解析邏輯吧。 我先挑比較軟的柿子吃,從 RESP 裡三種單行資料型態開始:Simple Strings (簡單...