Redis永続化設定忘れでデータが消失『Web/DBの話⑩』
再起動したら、
キャッシュもセッションも全部消えた。
アプリは正常、Redisも起動している。
原因は Redisの永続化設定忘れ。
Redisを「インメモリだから速い」というだけで使うと、
落ちた瞬間に中身はゼロになる。
冒頭の一言要約
Redisは“保存しないと消える”。
永続化設定を入れていないRedisは、揮発メモリそのもの。
症状(あるある)
サーバ再起動後にデータが空
Redis再起動でログインセッション全消失
再起動前は問題なかった
DBには残っているがRedis前提の処理が壊れる
障害対応で再起動したら被害拡大
「キャッシュだから問題ないと思っていた」
原因と仕組み(なぜ起きるか)
RDB / AOF をどちらも有効にしていない
Redisを“キャッシュ専用”のつもりで本番投入
セッション/キュー/一時データをRedis依存
永続化の違い(RDB/AOF)を理解していない
ディスク書き込みを嫌って設定を切った
永続化ファイルの保存先を確認していない
Redisは
メモリが正、永続化はオプション。
設定しない限り、
再起動=初期状態になる。
図:永続化なしRedisの挙動
[Redisメモリ]
├─ データ
├─ データ
├─ データ
│
(再起動)
▼
空
切り分け(最短コース)
永続化設定の確認
redis-cli CONFIG GET save redis-cli CONFIG GET appendonly
RDB/AOF ファイル存在確認
ls -lh /var/lib/redis
現在の役割確認
キャッシュだけか?
セッション・キューも載せているか?
再起動時の挙動確認
再起動後にデータが戻るか
ログ確認
journalctl -u redis
今すぐ効く対処(テンプレ)
◆ RDB(スナップショット)有効化(例)
save 900 1
save 300 10
save 60 10000
→ 一定回数の更新で自動保存。
◆ AOF(追記ログ)有効化(推奨)
appendonly yes
appendfsync everysec
データ耐久性重視なら AOF
性能と耐久性のバランスが良い
◆ 設定反映
systemctl restart redis
※ 永続化前のデータは戻らない。
これ以上失わないための設定。
恒久対策/再発防止チェックリスト
Redisの用途(キャッシュ/セッション/キュー)を明確化
本番Redisは必ず永続化を有効化
RDB/AOF の方式を理解して選択
永続化ファイルの保存先・容量を監視
再起動テストで復元を確認
Redisを「消えて困る用途」に使う場合は冗長化
設定変更時に耐久性への影響を確認
障害対応手順に「Redis再起動時の注意」を明記
落とし穴(やりがちミス)
「キャッシュだから大丈夫」と思い込む
セッションをRedisに置いていることを忘れる
RDBだけで十分だと誤解
永続化ファイルのディスク容量を見ていない
再起動で直す癖がそのまま事故につながる
まとめ(行動指針)
Redisは
速いが、放っておくと消える。
用途を決める → 永続化を選ぶ → 再起動を想定する。
この3点を押さえるだけで、
Redis由来の“突然のデータ消失”は確実に防げる。
