在本系列中文章中,將會用 Go 建立一個與 Redis 相容的服務:這其中融合了我這幾年 Go 語言的經驗、技巧以及架構思考。
本系列適合對 Go 有一些基礎的朋友(有其它程式語言經驗的亦可,但可能會需要習慣一下 Go Style),希望我們在這個旅程中能收獲滿滿。
嗨,我是芥龍!很高興能與你見面! 關於這個主題 在幾個月前,閒閒沒事的我在網路上衝浪,並且找到了 Build Your Own X 這個 GitHub Repo...
Redis 是一個用 C 寫成的鍵值資料庫,顧名思義:儲存「鍵(Key)」與「值(Value)」的資料庫。 基礎功能 可以將 Redis 想像成一個巨大的 Ha...
在 Go 1.13 之後,官方提供了套件管理功能 Go Module,同時也寫了一篇指南 Tutorial: Create a Go module。 我們可以用...
與我們常見的 HTTP Server 不同,Redis 採用 TCP Server 實作,並且在這之上設計了自己的通訊協定 Redis serializatio...
截至目前為止,我們都把程式碼全部塞在 ./cmd/olivine/main.go 裡--雖然 AI 常常這麼幹,但這顯然不是個好主意。 App 結構體 我一般會...
雖然我們進一步將原本擠在 ./cmd/olivine/main.go 中的實作原封不動塞進 ./cmd/olivine/app.go 中,但這其實並沒有實際解決...
我們必須要講相同的語言,才有辦法與其它人溝通。同樣地,如果我們想要與 Redis 溝通,就必須使用 Redis serialization protocol(簡...
BulkString 與 Array BulkString 根據 RESP 的規格,存在兩種 BulkString: BulkString Null B...
在昨天的文章中有提到,本質上 redis-cli 在發送指令的時候就是發送一組「由 BulkString 組成的 Array」,在未來的文章中我們會用「Redi...
在每次 server.(*simpleSrv).serve() 執行完之後都會呼叫 defer conn.Close(),所以每次都必須重新連線才能執行 Red...