Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
小さく始める自作入門!~RedisっぽいKVSを作って学んだこと~
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
yamaken_0216
November 12, 2025
Programming
280
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
小さく始める自作入門!~RedisっぽいKVSを作って学んだこと~
TechBull LT&交流会 #3
yamaken_0216
November 12, 2025
Other Decks in Programming
See All in Programming
Everything will be SERVERLESS — 信じて運用した10年の経験値 / Everything Will be Serverless — Lessons Learned from 10 Years of Operational Experience
seike460
PRO
1
800
WebRTC映像をAirPlayに対応させる挑戦.pdf
monolithic_adam
0
350
APNsからLive Activityを開始する話
yumnumm
0
150
Workers Cache を知る
syumai
0
340
Domain-Driven Transformation
hschwentner
2
2.3k
iOS 27でニュースアプリはどう変わる!? 〜日経電子版の新機能対応と、開発事例から〜
lynnswap
7
13k
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
270
Atomic Design, Enforced: Scaling Mobile Design Systems (next.app devCon / droidCon Berlin 2026)
steliosf
PRO
0
140
Ghostty + Neovimで作る 透明でカッコ良い開発環境
j341nono
0
150
仕様駆動開発による爆速プロダクト開発 / Bakusoku Spec Driven Development
kobakei
0
210
GemmaをJevのように使ってみる / Use Gemma like Jev
kishida
5
720
R8 の設定見直しでアプリサイズ削減
andpad
0
190
Featured
See All Featured
The untapped power of vector embeddings
frankvandijk
2
1.9k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
350
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
260
Heart Work Chapter 1 - Part 1
lfama
PRO
10
37k
Typedesign – Prime Four
hannesfritz
42
3.2k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
2
6.3k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Transcript
小さく始める 自作入門! ~RedisっぽいKVSを作って学んだこと~
やまけん Profile SaaS企業でバックエンドエンジニアをしています。 最近、TechBullの運営になりました。 趣味 サッカー観戦、旅行、Podcast聴くこと 少し前に群馬で滝行体験ツアーにいきました。 yamaken_0216
何か自作してみたいな〜。 って思う時期ありますよね。
Key-Value Store作ってみよう!
なぜ、Key-Value Storeを選んだのか 身近なミドルウェアで仕様が明確 使い方を理解しており、動作イメージが掴みやすい 最小構成が数十行で完成 小さく始めて段階的に機能追加できる 参考となるOSSがある Redis, Valkey, Memcachedなどのコードを参考にできる
(今回はRedisを参考にしました。 )
Redisの説明 正式名称 : REmote DIctionary Server インメモリKVS RESP ( REdis
Serialization Protocol)で通信 データ構造 String, List, Set, Hash, Sorted Set... その他の機能 永続化、 Pub/Sub、 トランザクション...
redis-cli (Client) redis-server ユーザー Redis の説明 コマンド入力 入力されたコマンドを RESPにシリアライズする Responseされた
RESPをデシリアライズする RequestされたRESPを 解析して、処理する Request Response 結果を返す
redis-cli (Client) redis-server ユーザー Redis の説明 コマンド入力 入力されたコマンドを RESPにシリアライズする Responseされた
RESPをデシリアライズする RequestされたRESPを 解析して、処理する Request Response 結果を返す 今回自作するところ
どう作っていくのか。 コアはシンプルなので簡単な流れだけ紹介!
どう作っていくのか。 1. 基本的なRESPを理解する 2. TCPサーバーとPINGコマンドを作る 3. SET,GETコマンドを実装する 4. 好きなように拡張しよう
どう作っていくのか。 1. 基本的なRESPを理解する 2. TCPサーバーとPINGコマンドを作る 3. SET,GETコマンドを実装する 4. 好きなように拡張しよう
1 . 基本的なRESPを理解する RESPとは、Redis Serialization Protocolのこと Redisクライアントとサーバーが通信するためのテキスト ベースのプロトコル RESP2とRESP3がある この段階では、基本的なプロトコルのRESP2を使う
1 . 基本的なRESPを理解する 出典: Redis 公式ドキュメント https://redis.io/docs/latest/develop/reference/protocol-spec/
どう作っていくのか。 1. 基本的なRESPを理解する 2. TCPサーバーとPINGコマンドを作る 3. SET,GETコマンドを実装する 4. 好きなように拡張しよう
2.TCPサーバーとPINGコマンドを作る TCPサーバーを作る 好きな言語 標準ライブラリで提供されているものを使うと簡単! 簡易的なPINGコマンドを作る PINGというコマンドがリクエストされたらPONGと返す
どう作っていくのか。 1. 基本的なRESPを理解する 2. TCPサーバーとPINGコマンドを作る 3. SET,GETコマンドを実装する 4. 好きなように拡張しよう
3.SET,GETコマンドを実装する SETコマンドを実装する リクエスト SET key名 value名 ハッシュ(連想配列)に保存する レスポンス OKを返す
3.SET,GETコマンドを実装する GETコマンドを実装する リクエスト GET key名 ハッシュ(連想配列)からkey名の値を取得する レスポンス 取得した値を返す これで、最小構成でインメモリKVSは完成
どう作っていくのか。 1. 基本的なRESPを理解する 2. TCPサーバーとPINGコマンドを作る 3. SET,GETコマンドを実装する 4. 好きなように拡張しよう
4.好きなように拡張しよう 拡張する機能候補 TTL機能の追加 型の追加( String , List, Set, Hash, Sorted
Set...) データの永続化 ...
自作時に参考になったもの 公式ドキュメント 今回はRedisのドキュメントを参考になった GitHub 自作KVSしてる人のコードもあるので参考になる LLM コードリーディングや仕様の壁打ちに使った
まとめ 公式ドキュメントを読もう 最小構成でどう作るかが大事 LLMを使って理解をする 興味を持った方、ぜひ一緒に自作しましょう!
Thank you!