Redisはなぜ再起動してもデータを失わないのか

公開日: 2026.04.06更新日:
2分で読めます

「メモリに保存するなら、落ちたら消えるんじゃないの?」——その素朴な疑問から始めた。

仕事でRedisを触る機会があり、改めて仕組みを整理したくなった。面接問題を出発点にAIと話してみたログをそのまま残しておく。

永続化の仕組み

「Redisはデータをメモリに保存すると聞いた。再起動後のデータ損失はどうやって防ぐの?」

「Redisには2つの永続化の仕組みがある。ひとつは RDB(スナップショット)、もうひとつは AOF(Append Only File)だ。

RDB は一定条件でメモリの状態をまるごとディスクに書き出す方式。デフォルトはこんな設定が並んでいる。」

「AOFはコマンドをどんどん追記していくなら、RDBより容量が大きくなりそう。ログファイルの方が小さくなるケースってある?」

「逆で、AOFの方が大きくなりやすい。同じキーを1万回更新した場合、RDBは最新の値1個だけ保存するのに対して、AOFは1万行のSETコマンドが全部残る。

そのため AOF Rewrite(BGREWRITEAOF)という仕組みがあり、「現在の状態を再現するのに必要な最小コマンド数」に圧縮し直す処理が定期的に走る。」

話してみて気づいたのは、RDBとAOFの違いが「写真」と「日記」の違いに似ているということ。写真は撮った瞬間の状態しか残らないが、日記は出来事をすべて記録しておくことで後から再現できる。