こんにちは! Redisの世界へようこそ。
システム開発の現場で「高速なキャッシュ」として爆発的な人気を誇るRedisですが、実はそれだけじゃないんです。データをしっかりディスクに保存して、万が一の電源断でも消えないようにする「永続化(えいぞくか)」という頼もしい機能も持っています。
今回は、その永続化の心臓部である「AOF(Append Only File)設定」について、一緒に紐解いていきましょう。
ここをクリアすれば、Redisのデータ保全の基本はバッチリマスターできますよ。難しい専門用語はなるべく使わずに、身近な例えでお話ししますね。
—
1. Redisの記憶は「メモ用紙」からはじまる
まず、Redisの基本的な性質を知っておきましょう。
Redisは、すべてのデータを「メインメモリ(RAM)」という非常に高速な場所に置いています。だからこそ、ミリ秒単位の爆速レスポンスを実現できるのです。
しかし、メモリには大きな弱点があります。それは「パソコンの電源を切ると、中身がすべて消えてしまう(消えゆく儚い記憶)」ということ。
「じゃあ、消えないようにノートに書き留めておこう」というのが、Redisの永続化機能です。そのノートの書き方の一つが、今回主役にする AOF(Append Only File) なんです。
—[PR] [おすすめのクラウドRedisマネージドサービス一覧]
—
2. AOFを「カフェの注文ノート」に例えてみよう
AOFって、一体どんな仕組みなんでしょう?
イメージしやすいように、「人気カフェの注文受付ノート」に例えてみましょう。
- RDB(もう一つの永続化方式)のやり方:
お店が閉まる瞬間や、一定時間ごとに「いま、お店の中にいるお客さんが食べているメニューの一覧表」をパシャリと写真に撮ってアルバムに保存する方式。
- AOF(今回のテーマ)のやり方:
お客さんが注文するたびに、ノートに「コーヒー1つ追加」「サンドイッチ1つ追加」と、起きた出来事(操作)を上から順番にひたすら書き足していく方式。
このAOFの「起きたことを順番にメモし続ける(Append = 付け加える)」というシンプルさが、実はシステムの世界ではものすごく強力なのです。
もしお店が停電してフッ飛んでしまっても、次に電源を入れたとき、この「注文ノート」を上から順番に再現していけば、停電直前の状態を完璧に復元できますよね? RedisのAOFもこれとまったく同じことをやっています。
—
3. AOFを有効にする魔法の呪文:`appendonly yes`
さて、前置きはこれくらいにして、実際にRedisに「注文ノートをつけ始めて!」とお願いする方法を見てみましょう。
Redisの設定ファイルである `redis.conf` を開くか、実行中のRedisにコマンドを送ります。
設定は驚くほどシンプルです。
redis.conf ファイルの中、あるいは設定変更コマンド
appendonly yes
たったこれだけ!
この `appendonly yes` という設定を入れた瞬間から、Redisは裏側で専用のノート(AOFファイル)を広げ、あなたが指示したすべてのデータ操作(書き込み・更新など)を1行ずつ実直に記録し始めます。
初期状態では、この設定は `no`(ノートを使わない)になっています。もしデータを絶対に失いたくない本番環境で運用するなら、この設定を `yes` にすることがエンジニアの最初の関門であり、必須の作法となります。
—
4. 知っておきたいAOFの裏側(先輩からのちょっとしたアドバイス)
「じゃあ、ずっとノートに書き続けたら、ノートが分厚くなりすぎてパンクしない?」
鋭いですね! その通り、何年も何十年も前の「コーヒー注文の記録」をずっと持ち歩くのは非効率だし、サーバーの容量も圧迫します。
ここでRedisの優秀な裏技が登場します。AOFには「リライト(書き換え・要約)」という機能があります。
「ここまで古い履歴がたくさんあるけど、結局今の最終結果は『コーヒー1杯、サンドイッチ1つ』なんだから、これまでの分は全部まとめて『現在の状態』だけを1行で書き直そう!」と、夜な夜なノートを綺麗に整理整頓してくれるのです。この絶妙なバランスのおかげで、ファイルが無限に膨れ上がるのを防いでいます。
—
まとめ
お疲れ様でした! 今回学んだポイントを振り返ってみましょう。
1. Redisのデータはメモリにあるので、電源を切ると消える。
2. それを防ぐためにデータを残す仕組みが「永続化」。
3. その一つであるAOFは、操作の歴史をノートにひたすら書き足していく方式。
4. 有効にするには設定を `appendonly yes` にするだけ。
「データを守る」ための第一歩は、この設定を正しく理解し、適用することにあります。仕組みが分かってしまえば、もう怖いものはありませんね。
明日からのRedisライフが、より安心で楽しいものになりますように。
先輩エンジニアの私からは以上です!また次の知見でお会いしましょう。
コメント