こんにちは!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の基本の扉を開いたあなたなら、次のステップも余裕です。
次回の解説もお楽しみに! チーフアーキテクトの私でした。
コメント