Redis の永続化管理

RedisBeginner
オンラインで実践に進む

はじめに

この実験では、Redis の永続性管理について、データ耐久性の設定と管理方法に焦点を当てて探求します。まず、CONFIG SET コマンドを使用して Redis Database (RDB) の永続性を設定します。これにより、Redis データのポイントインタイムスナップショットを作成できます。また、Append-Only File (AOF) の永続化を有効にし、手動でデータを保存し、最終保存時刻を確認し、AOF ファイルをリライトしてサイズを最適化する方法についても説明します。

RDB 永続化の設定

このステップでは、Redis Database (RDB) の永続性を設定します。RDB は、指定された間隔でデータセットのポイントインタイムスナップショットを作成します。ここでは、サーバーを再起動せずに Redis サーバーの設定を動的に変更するために CONFIG SET コマンドを使用します。

まず、Redis コマンドラインインターフェース (redis-cli) を使用して Redis サーバーに接続します。ターミナルを開き、以下のコマンドを実行します。

redis-cli

redis-cli プロンプトが表示され、127.0.0.1:6379> のようになります。

CONFIG GET コマンドを使用して、現在の RDB 保存設定を確認しましょう。

CONFIG GET save

デフォルトの出力は、いくつかの保存ポイントを示しています。

1) "save"
2) "900 1 300 10 60 10000"

これは、900 秒以内に少なくとも 1 つのキーが変更された場合、または 300 秒以内に少なくとも 10 個のキーが変更された場合、または 60 秒以内に少なくとも 10000 個のキーが変更された場合に Redis がデータベースを保存することを意味します。

次に、これを単一の保存ポイントに変更します。60 秒以内に少なくとも 1 つのキーが変更された場合にデータベースを保存するようにします。

CONFIG SET save "60 1"

出力として OK が表示され、変更が確認されます。

OK

設定が更新されたことを確認します。

CONFIG GET save

出力は新しい設定を反映しているはずです。

1) "save"
2) "60 1"

次に、Redis が RDB ファイル (dump.rdb) を保存するディレクトリを設定します。まず、シェルコマンドを実行するために redis-cli を終了します。

exit

次に、新しいディレクトリを作成し、適切な権限を設定します。Redis サーバーは redis ユーザーとして実行されるため、ファイルを書き込むにはディレクトリの所有権が必要です。

sudo mkdir -p /var/lib/redis/labex_data
sudo chown redis:redis /var/lib/redis/labex_data

Redis に再接続し、dir 設定を新しいパスに設定します。

redis-cli
CONFIG SET dir /var/lib/redis/labex_data

OK が表示されるはずです。変更を確認します。

CONFIG GET dir

出力は新しいディレクトリを確認します。

1) "dir"
2) "/var/lib/redis/labex_data"

これで、Redis は永続化ファイルを /var/lib/redis/labex_data ディレクトリに保存するようになります。

進捗が正しく保存および検証されていることを確認するために、redis-cli セッションを終了してください。

exit

AOF 永続化の有効化

このステップでは、Append-Only File (AOF) の永続化を有効にします。AOF は、サーバーが受け取ったすべての書き込み操作をログに記録します。データはログにより頻繁に書き込まれるため、RDB よりも優れた耐久性を提供します。

まず、Redis サーバーに接続します。

redis-cli

CONFIG GET コマンドを使用して、AOF が現在有効になっているか確認します。

CONFIG GET appendonly

デフォルトでは無効になっています。

1) "appendonly"
2) "no"

AOF を有効にするには、appendonly パラメータを yes に設定します。

CONFIG SET appendonly yes

出力として OK が表示されます。次に、変更を確認します。

CONFIG GET appendonly

出力は、AOF が現在有効になっていることを確認するはずです。

1) "appendonly"
2) "yes"

AOF が有効になると、Redis はすべての書き込みコマンドを、前のステップで設定したディレクトリ (/var/lib/redis/labex_data) にある appendonly.aof ファイルにログ記録します。

AOF の動作を確認するために、データをいくつか追加しましょう。この SET コマンドは AOF ファイルに書き込まれます。

SET mykey "myvalue"

以下の出力が表示されるはずです。

OK

進捗が正しく保存および検証されていることを確認するために、redis-cli セッションを終了してください。

exit

SAVE コマンドによる手動データ保存

このステップでは、SAVE コマンドを使用して RDB スナップショットを手動でトリガーする方法を学びます。Redis は設定に基づいてデータを自動的に保存しますが、手動での保存はバックアップの作成や、計画されたメンテナンスイベントの前にデータが永続化されていることを確認するのに役立ちます。

まず、Redis サーバーに接続します。

redis-cli

保存するデータがあるように、新しいデータをいくつか追加しましょう。

SET anotherkey "anothervalue"

以下の出力が表示されるはずです。

OK

次に、SAVE コマンドを使用してディスクへの保存を手動でトリガーします。

SAVE

SAVE コマンドは同期保存を実行します。これは、保存操作が完了するまで他のすべてのクライアントリクエストをブロックすることを意味します。大規模なデータベースの場合、これは顕著な一時停止を引き起こす可能性があります。

保存が完了すると OK が表示されます。

OK

これにより、Redis が現在のデータセットを /var/lib/redis/labex_data ディレクトリの dump.rdb ファイルに正常に書き込んだことが確認されます。本番環境では、非ブロッキングの BGSAVE コマンドが一般的に推奨されます。

進捗が正しく保存および検証されていることを確認するために、redis-cli セッションを終了してください。

exit

LASTSAVE で最終保存時刻を確認

このステップでは、LASTSAVE コマンドを使用して、最後に成功した RDB 保存のタイムスタンプを確認します。このコマンドは、永続化戦略が期待どおりに機能しているかを監視および検証するのに役立ちます。

まず、Redis サーバーに接続します。

redis-cli

最後に成功した保存のタイムスタンプを取得するには、LASTSAVE コマンドを実行します。

LASTSAVE

コマンドは Unix タイムスタンプを返します。これは、1970 年 1 月 1 日 (UTC) から経過した秒数です。出力は以下のようなものになりますが、数値はあなたの場合異なります。

(integer) 1678886400

このタイムスタンプは、前のステップで SAVE コマンドを実行した時刻に対応します。

タイムスタンプが更新されるのを確認しましょう。さらにデータを追加し、別の手動保存を実行してから、再度最終保存時間を確認します。

SET anotherkey2 "anothervalue2"
SAVE
LASTSAVE

これらのコマンドを実行した後、2 回目の LASTSAVE コマンドによって、新しい、より最近のタイムスタンプが返され、新しいスナップショットが作成されたことが確認されます。

進捗が正しく保存および検証されていることを確認するために、redis-cli セッションを終了してください。

exit

BGREWRITEAOF で AOF をリライト

このステップでは、BGREWRITEAOF コマンドを使用して AOF ファイルを書き換える方法を学びます。アプリケーションが実行されるにつれて、AOF ファイルは大きくなります。多くの冗長なコマンド(例:カウンターを複数回インクリメントする)が含まれる可能性があります。AOF ファイルを書き換えることで、現在のデータセットを再構築するために必要な最小限のコマンドセットを持つ、新しいコンパクトなファイルが作成され、Redis の起動時間を大幅に改善できます。

まず、Redis サーバーに接続します。

redis-cli

書き換えの効果を示すために、AOF ログに不要なコマンドを追加するいくつかの操作を実行しましょう。

SET key1 "value1"
SET key2 "value2"
DEL key1
SET key3 "value3"

AOF ファイルには現在 4 つのコマンドが含まれています。しかし、現在の状態を再構築するには、key2key3 を設定するだけで済みます。key1 に関連するコマンドは冗長です。

次に、AOF ファイルのバックグラウンド書き換えをトリガーします。

BGREWRITEAOF

プロセスが開始されたことを示す確認メッセージが表示されます。

Background append only file rewriting started

Redis はこの操作をバックグラウンドで実行するため、クライアントリクエストをブロックしません。一時的な AOF ファイルを作成し、現在のデータセットを最も効率的な方法で書き込み、その後、古い AOF ファイルを新しいファイルとアトミックに置き換えます。

書き換えが完了すると、appendonly.aof ファイルは小さくなり、key2key3 を設定するコマンドのみが含まれるようになります。

進捗が正しく保存および検証されていることを確認するために、redis-cli セッションを終了してください。

exit

まとめ

この実験では、Redis の永続化管理の基本を学びました。CONFIG SET を使用して RDB と AOF の両方の永続化メカニズムを設定する練習をしました。また、SAVE コマンドによる手動データ保存、LASTSAVE による最終保存時間の確認、BGREWRITEAOF による AOF ファイルの最適化についても学びました。これらのスキルは、データの耐久性を確保し、健全な Redis インスタンスを維持するために不可欠です。