メインコンテンツまでスキップ

第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.yamlservices: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-alpine redis:<version>-alpine みたいなタグが公式で用意されています。(Docker Hub) latestにしないのは「ある日突然バージョンが変わって詰む」事故を避けるため🧯💥
  • ports: "127.0.0.1:6379:6379" 自分のPC(localhost)からだけつなげる指定だよ🔒(うっかり公開しにくい)
  • healthcheck redis-cli pingPONG を返せるかで生存確認する定番パターン👌(Last9) あとで depends_on: condition: service_healthy と組み合わせると、起動順も安定します⏳🩺(Docker Documentation)

5) 起動して動作確認する🧪✅

5-1) Redisだけ起動してみる🚀

docker compose up -d redis
docker compose ps

redisrunning になってたら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

あとで .envREDIS_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つを満たしたらクリア!🏁✨

  1. docker compose up -d redis でRedisが起動する🚀
  2. redis-cli pingPONG を返す🏓
  3. set/get ができる📦

できたら、最後に片付けも練習👇🧹

docker compose down

10) 次章へのつなぎ🚀👣

次は API(Node/TypeScript)をComposeに載せるよ!🧑‍💻🔥 RedisとPostgresが揃ったので、いよいよ「アプリがスタックの中で動く」感が出てきます✨