【入門編】 Redis永続化の概要 – Redis

こんにちは!Redisの奥深い世界へようこそ。
チーフアーキテクトの私です。

今回は、Redis学習の最初の大きな山であり、かつ実務でも極めて重要なテーマである「永続化(Persistence)」についてお話しします。

「Redisって、メモリ上で超高速に動くのはいいけど、サーバーが突然落ちたらデータは全部消えちゃうの?」
そんな不安を持ったことはありませんか?

結論から言うと、ちゃんとした仕組みを使えば消えません。
今回は、初心者の方でもスッと腑に落ちるように、身近な例えを交えながらRedisのデータ保存の秘密を紐解いていきましょう。

ここをクリアすれば、Redisの基本はバッチリマスターできますよ!ぜひ最後までついてきてくださいね。

—

1. なぜRedisのデータは消えてしまうのか?

まず前提として、Redisは「超高速なメモ帳」だと思ってください。

私たちが普段使っているパソコンやサーバーの「メモリ(RAM)」というのは、作業机のようなものです。広くて、ものを出し入れするスピードは光の速さですが、「仕事が終わって電気を消すと(=サーバーを再起動すると)、机の上にあったものはすべて綺麗に片付けられてしまう(消滅する)」という性質を持っています。

一方で、ハードディスクやSSDといった「ストレージ」は、いわば「頑丈な引き出し」です。出し入れはメモリに比べて少し遅いですが、鍵をかけてしまっておけば、電気を消しても(電源を切っても)データはずっと残り続けます。

Redisは、基本的にはこの「超高速な作業机(メモリ)」の上だけで仕事をしています。だからこそ圧倒的に速いのです。しかし、このままだとサーバーが突発的な停電や故障で止まったときに、大切なデータがすべて消えてしまいます。

そこで登場するのが、「作業机の上の重要なメモを、いかにして安全な引き出しにしまうか」という永続化(Persistence)の技術です。

—

2. Redisが持つ「2つの引き出しのしまい方」

Redisには、データをディスク(引き出し)に保存するために、全くアプローチが異なる2つの強力な方式が用意されています。

1. RDB(Redis Database):アルバム写真方式
2. AOF(Append Only File):日記(家計簿)方式

この2つは、性格がまったく異なります。それぞれの特徴を日常の例えで見ていきましょう。

—

① RDB方式 = 「アルバム写真」をパシャリと残す

RDBは、「ある決まったタイミングで、作業机の上にあるデータをまるごと写真に撮ってディスクに保存する」方式です。

📸 日常の例え:スマホの「一日の終わりのバックアップ」

夜寝る前に、その日撮った写真やデータをクラウドに一括でバックアップするようなイメージです。

  • メリット:
  • 保存されたファイル(写真)がコンパクト。
  • サーバーを再起動してデータを復元するとき、写真をパッと読み込むだけなので圧倒的に速い。
  • デメリット:
  • 「次の写真撮影(バックアップ)をする前」にサーバーが落ちてしまった場合、その間に起きた変更データはすべて消えてしまう(写真に写っていないから)。

Redisの設定ファイル(`redis.conf`)では、例えば「5分以内に1万回データが書き換わったら、写真を撮る」といった条件を自由に変更できます。

—

② AOF方式 = 「起きたことすべてを日記(家計簿)にメモし続ける」

AOFは、「作業机の上で何か操作をするたびに、『〇時〇分、リンゴを1個買った』という手順を、すべてノートに1行ずつ書き足していく」方式です。

📖 日常の例え:お小遣い帳や、料理のレシピのメモ

「牛乳を買った」「卵を割った」「砂糖を大さじ1入れた」という手順を、時系列で一言一句漏らさずノートに書き留めていくイメージです。

  • メリット:
  • データを変更するたびに記録しているので、万が一サーバーが落ちても、直前までのデータをほぼ完全に復元できる(データ損失のリスクが極めて低い)。
  • デメリット:
  • 操作のたびにノートに追記するため、長期間使い続けるとノートがどんどん分厚くなり、ディスク容量を圧迫する。
  • 障害から復元するとき、その分厚いノートを最初から読み直して再現するため、起動に少し時間がかかる。

—

3. 実務ではどう使い分けているの?

「じゃあ、どっちを使えばいいの?」という疑問がわきますよね。

実際の現場(プロダクション環境)のシニアエンジニアたちは、この2つの性質をよく理解し、「いいとこ取り」をしています。

  • 基本は両方ONにする
  • 安全性を最大化するため、基本的にはAOFを有効にしてデータの損失を防ぎます。
  • 同時に、万が一の復旧スピードを上げるためにRDBの定期スナップショットも併用します。
  • 「キャッシュ」としてしか使わないなら、いっそ両方OFFにするのも手
  • 例えば、データの消滅がビジネス上全く問題なく(最悪、他のデータベースから再取得できるなど)、とにかく限界までスピードを追求したいセッション情報や一時的なキャッシュの用途では、永続化をあえて切ることもあります。

—

まとめ

今回のポイントをギュッと凝縮して振り返りましょう。

  • Redisは基本「メモリ(作業机)」で動くので、そのままでは電源を切るとデータが消える。
  • データを残す仕組みを「永続化」と呼ぶ。
  • 永続化には2つのアプローチがある:
  • RDB:データをまるごと写真に撮る(コンパクト・復旧が速いが、最後の数分のデータが消えるリスクあり)
  • AOF:操作の歴史を日記のようにすべてメモする(データが消えにくいが、ファイルが重くなりがち)

Redisの永続化の仕組みは、一見難しそうに見えますが、本質は「スピードと安全性のトレードオフ(どちらをどれくらい取るか)」のバランス調整にすぎません。

この全体像のイメージさえ掴んでおけば、今後設定ファイル(`redis.conf`)を触る時も迷子になることはありませんよ。

さあ、Redisの基本の扉を開いたあなたなら、次のステップも余裕です。
次回の解説もお楽しみに! チーフアーキテクトの私でした。

コメント

タイトルとURLをコピーしました