小さく始める自作入門!~RedisっぽいKVSを作って学んだこと~
by
yamaken_0216
×
Copy
Open
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
小さく始める 自作入門! ~RedisっぽいKVSを作って学んだこと~
Slide 2
Slide 2 text
やまけん Profile SaaS企業でバックエンドエンジニアをしています。 最近、TechBullの運営になりました。 趣味 サッカー観戦、旅行、Podcast聴くこと 少し前に群馬で滝行体験ツアーにいきました。 yamaken_0216
Slide 3
Slide 3 text
何か自作してみたいな〜。 って思う時期ありますよね。
Slide 4
Slide 4 text
Key-Value Store作ってみよう!
Slide 5
Slide 5 text
なぜ、Key-Value Storeを選んだのか 身近なミドルウェアで仕様が明確 使い方を理解しており、動作イメージが掴みやすい 最小構成が数十行で完成 小さく始めて段階的に機能追加できる 参考となるOSSがある Redis, Valkey, Memcachedなどのコードを参考にできる (今回はRedisを参考にしました。 )
Slide 6
Slide 6 text
Redisの説明 正式名称 : REmote DIctionary Server インメモリKVS RESP ( REdis Serialization Protocol)で通信 データ構造 String, List, Set, Hash, Sorted Set... その他の機能 永続化、 Pub/Sub、 トランザクション...
Slide 7
Slide 7 text
redis-cli (Client) redis-server ユーザー Redis の説明 コマンド入力 入力されたコマンドを RESPにシリアライズする Responseされた RESPをデシリアライズする RequestされたRESPを 解析して、処理する Request Response 結果を返す
Slide 8
Slide 8 text
redis-cli (Client) redis-server ユーザー Redis の説明 コマンド入力 入力されたコマンドを RESPにシリアライズする Responseされた RESPをデシリアライズする RequestされたRESPを 解析して、処理する Request Response 結果を返す 今回自作するところ
Slide 9
Slide 9 text
どう作っていくのか。 コアはシンプルなので簡単な流れだけ紹介!
Slide 10
Slide 10 text
どう作っていくのか。 1. 基本的なRESPを理解する 2. TCPサーバーとPINGコマンドを作る 3. SET,GETコマンドを実装する 4. 好きなように拡張しよう
Slide 11
Slide 11 text
どう作っていくのか。 1. 基本的なRESPを理解する 2. TCPサーバーとPINGコマンドを作る 3. SET,GETコマンドを実装する 4. 好きなように拡張しよう
Slide 12
Slide 12 text
1 . 基本的なRESPを理解する RESPとは、Redis Serialization Protocolのこと Redisクライアントとサーバーが通信するためのテキスト ベースのプロトコル RESP2とRESP3がある この段階では、基本的なプロトコルのRESP2を使う
Slide 13
Slide 13 text
1 . 基本的なRESPを理解する 出典: Redis 公式ドキュメント https://redis.io/docs/latest/develop/reference/protocol-spec/
Slide 14
Slide 14 text
どう作っていくのか。 1. 基本的なRESPを理解する 2. TCPサーバーとPINGコマンドを作る 3. SET,GETコマンドを実装する 4. 好きなように拡張しよう
Slide 15
Slide 15 text
2.TCPサーバーとPINGコマンドを作る TCPサーバーを作る 好きな言語 標準ライブラリで提供されているものを使うと簡単! 簡易的なPINGコマンドを作る PINGというコマンドがリクエストされたらPONGと返す
Slide 16
Slide 16 text
どう作っていくのか。 1. 基本的なRESPを理解する 2. TCPサーバーとPINGコマンドを作る 3. SET,GETコマンドを実装する 4. 好きなように拡張しよう
Slide 17
Slide 17 text
3.SET,GETコマンドを実装する SETコマンドを実装する リクエスト SET key名 value名 ハッシュ(連想配列)に保存する レスポンス OKを返す
Slide 18
Slide 18 text
3.SET,GETコマンドを実装する GETコマンドを実装する リクエスト GET key名 ハッシュ(連想配列)からkey名の値を取得する レスポンス 取得した値を返す これで、最小構成でインメモリKVSは完成
Slide 19
Slide 19 text
どう作っていくのか。 1. 基本的なRESPを理解する 2. TCPサーバーとPINGコマンドを作る 3. SET,GETコマンドを実装する 4. 好きなように拡張しよう
Slide 20
Slide 20 text
4.好きなように拡張しよう 拡張する機能候補 TTL機能の追加 型の追加( String , List, Set, Hash, Sorted Set...) データの永続化 ...
Slide 21
Slide 21 text
自作時に参考になったもの 公式ドキュメント 今回はRedisのドキュメントを参考になった GitHub 自作KVSしてる人のコードもあるので参考になる LLM コードリーディングや仕様の壁打ちに使った
Slide 22
Slide 22 text
まとめ 公式ドキュメントを読もう 最小構成でどう作るかが大事 LLMを使って理解をする 興味を持った方、ぜひ一緒に自作しましょう!
Slide 23
Slide 23 text
Thank you!