第10章:Redisを追加して“キャッシュ/キューの土台”を作る🟥⚡
この章は「Postgresに加えて、RedisもComposeに乗せる」回だよ〜!🎉 Redisが入ると、**“速い一時置き場”**が手に入って、アプリが一気に“それっぽい開発スタック”になります😎✨
1) この章のゴール🎯
- ComposeにRedisサービスを追加できる🧩
- Redisがちゃんと起動してるか、PING / SET / GETで確認できる✅
- アプリからつなぐときの接続先(URL)の考え方がわかる🌐
- 「
latestは避ける」「healthcheckを付ける」みたいな、事故りにくい型が身につく🧯✨
2) Redisって何?ざっくり一言で🧠💡
Redisは「めっちゃ速い共有メモ帳」みたいなやつ📒⚡ 主にメモリ上で動くので、読み書きが超高速です🏎️💨
よくある使い方はこの3つ👇
- キャッシュ:重い処理結果をちょい置きして高速化🧠⚡(例:ランキング、検索結果、外部API結果)
- セッション:ログイン状態などをサクッと管理🔑👤
- キュー:あとでやる処理を溜める📬🚚(例:メール送信、画像変換、通知)
一方、PostgreSQLは「正確に保存する本棚📚」みたいな存在。 Redisは「速いけど一時的になりやすい」側、Postgresは「重いけど堅牢」側、ってイメージだね🙂
3) 2026時点の“バージョン固定”の考え方🔒🧱
ここ超だいじ!✨
Redisは必ずタグを固定しよう(最低でも 8.4 くらいまで)🧷
- 2026-02-10 時点だと、Redis Open Source は **8.4.1(2026-02-08)**が最新として掲載されています。(endoflife.date)
- DockerのComposeは
version:を見て挙動が変わる時代じゃなくて、versionはobsolete扱いです(書くと警告が出ることがある)。(Docker Documentation)
4) compose.yaml にRedisを追加する🧩🟥
まずは最小でいこう!👍
compose.yaml の services: に redis: を追加します。
services:
redis:
image: redis:8.4-alpine
ports:
- "127.0.0.1:6379:6379"
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 5s
timeout: 3s
retries: 30
ポイント解説📝✨
image: redis:8.4-alpineredis:<version>-alpineみたいなタグが公式で用意されています。(Docker Hub)latestにしないのは「ある日突然バージョンが変わって詰む」事故を避けるため🧯💥ports: "127.0.0.1:6379:6379"自分のPC(localhost)からだけつなげる指定だよ🔒(うっかり公開しにくい)healthcheckredis-cli pingがPONGを返せるかで生存確認する定番パターン👌(Last9) あとでdepends_on: condition: service_healthyと組み合わせると、起動順も安定します⏳🩺(Docker Documentation)
5) 起動して動作確認する🧪✅
5-1) Redisだけ起動してみる🚀
docker compose up -d redis
docker compose ps
redis が running になってたらOK!🎉
5-2) RedisにPINGしてみる🏓
docker compose exec redis redis-cli ping
PONG が返ったら勝ち🥳✨
5-3) SET/GETで「書ける・読める」を確認📦📤📥
docker compose exec redis redis-cli set hello "world"
docker compose exec redis redis-cli get hello
world が返れば完璧〜!😆🎊
6) “どこに繋ぐか”の超重要ルール🌐🧠
ここで混乱しがちなので、結論だけ覚えてね👇
- ホスト(Windows)からRedisに繋ぐ →
localhost:6379 - 別コンテナ(APIなど)からRedisに繋ぐ →
redis:6379(サービス名!)
つまり、アプリ用のURLはだいたいこう👇
- コンテナ内:
redis://redis:6379 - ホスト側ツール:
redis://localhost:6379
あとで .env に REDIS_URL=redis://redis:6379 とかでまとめると気持ちいいやつ😎🔑
7) Windowsでハマりやすいポイント🪟🧯
- 6379が既に使われてる(別のRedisをローカルで動かしてた等)
→
portsを"127.0.0.1:6380:6379"に変えて回避🔁 - 起動はしてるのに繋がらない
→ まず
docker compose exec redis redis-cli pingが通るか確認(内部OKなら外側の問題)🔍 - “localhostで繋がらない”のに“redisで繋がる”
→ それ、たぶん「コンテナから繋ごうとしてるのにlocalhostを使ってる」パターン!
コンテナ内の
localhostは そのコンテナ自身だよ〜😵💫(Redisは別コンテナ)
8) ちょい安全の話(開発でも一応知っておく)🔐⚠️
Redisは「外に出すと危ない」代表格です🙅♂️💥
なのでこの章では 127.0.0.1 バインドで“外に出にくく”してます。
しかもRedisはLuaまわりの深刻な脆弱性が話題になったこともあり、上げられるなら上げるが大事。(Redis)
(だからこそ、latestで勝手に変えるんじゃなくて、意図して上げるのが気持ちいいのよ🧘♂️✨)
9) ミニ課題📝🔥
次の3つを満たしたらクリア!🏁✨
docker compose up -d redisでRedisが起動する🚀redis-cli pingがPONGを返す🏓set/getができる📦
できたら、最後に片付けも練習👇🧹
docker compose down
10) 次章へのつなぎ🚀👣
次は API(Node/TypeScript)をComposeに載せるよ!🧑💻🔥 RedisとPostgresが揃ったので、いよいよ「アプリがスタックの中で動く」感が出てきます✨