記事ディレクトリ
RDBのフルネームはRedis database
。
- 名前が示すように、RDBはデータを格納するために使用されるRedisデータベースです。
- したがって、RDBの永続性により、Redisメモリに保存されているデータはRDBファイルに書き込まれ、ディスクに保存されて永続性が実現されます。
- Redis の特徴は、データを永続化できること、つまりメモリ内のデータをディスクに書き込んでデータが失われないようにしたり、ディスクからメモリにデータをロードしたりできることです。
最初のRedisの操作はすべてメモリに基づいているため、パフォーマンスは非常に高くなりますが、プログラムを閉じるとデータは失われます。
したがって、指定された間隔でメモリ内データをディスクに書き込む必要があります。これは専門用語でスナップショットです。
復元時、スナップショット ファイルはメモリに直接書き込まれます。
Memcachedには永続化機能がないため、これはRedisとMemcachedの主な違いのXNUMXつでもあります。
Redis メモリ データの永続化のために、Redis は次のメソッドを提供します。
- スナップショット方式(RDB、Redisデータベース):特定の時点でメモリデータをバイナリ形式でディスクに書き込みます。
- ファイルのみを追加(AOF、ファイルのみを追加)、すべての操作コマンドを記録し、テキスト形式でファイルに追加します。
- ハイブリッド永続性は、Redis 4.0の後の新しい方法であり、ハイブリッド永続性はRDBとAOFの利点を組み合わせたものです。書き込むときは、最初に現在のデータをRDBの形式でファイルの先頭に書き込み、次に後続の操作コマンドをAOFの形式でファイルに保存します。これにより、Redisの再起動の速度が保証されるだけでなく、速度が低下します。データ損失のリスク。
各永続化スキームには特定の使用シナリオがあるためです。
Redis RDB メモリ データ永続化操作モード
- RDB(Redisデータベース)は、特定の瞬間にメモリスナップショット(スナップショット)をバイナリ形式でディスクに書き込むプロセスです。
- メモリ スナップショットは、上で述べたものです。ある時点でのメモリ内のデータの状態レコードを参照します。
- これは写真を撮るのと似ています。友達の写真を撮ると、写真は友達のすべての画像を即座に記録できます。
- RDBをトリガーする方法はXNUMXつあります。XNUMXつは手動トリガーで、もうXNUMXつは自動トリガーです。
RDB を手動でトリガーする
永続性を手動でトリガーするには、次の XNUMX つの操作があります。save
とbgsave
。
それらの主な違いは、Redisメインスレッドの実行をブロックするかどうかです。
1.保存コマンド
クライアント側でsaveコマンドを実行すると、Redisの永続化がトリガーされますが、Redisもブロック状態になり、RDBが永続化されるまで他のクライアントから送信されたコマンドには応答しないため、使用には注意が必要です。本番環境。
127.0.0.1:6379> save OK 127.0.0.1:6379>
コマンドの実行プロセスを図に示します。
2.bgsaveコマンド
- bgsave (バックグラウンド保存) はバックグラウンド保存です。
- これと save コマンドの最大の違いは、bgsave が永続化を実行するために子プロセスを fork することです。
- 全体のプロセスは、子プロセスが fork の場合のみです。短い閉塞のみがあります。
- 子プロセスが作成された後、Redisのメインプロセスは他のクライアントからのリクエストに応答できます。
プロセス全体をブロックしますsave
コマンドと比較してbgsave
コマンドは明らかに私たちが使用するのにより適しています。
127.0.0.1:6379> bgsave Background Saving started # 提示开始后台保存 127.0.0.1:6379>
RDB を自動的にトリガーする
手動トリガーについて説明した後、自動トリガーを見てみましょう。自動トリガーの条件は、構成ファイルで構成できます。
1.mnを保存します
- save mnは、m秒以内に、n個のキーが変更されると、永続性が自動的にトリガーされることを意味します。パラメーターmおよびnは、Redis構成ファイルにあります。
- たとえば、save 60 1は、60つのキーが変更されている限り、XNUMX秒以内にRDBの永続性がトリガーされることを意味します。
- 永続性を自動的にトリガーすることの本質は、設定されたトリガー条件が満たされた場合、RedisがbgsaveコマンドをXNUMX回自動的に実行することです。
注:複数のsave mnコマンドが設定されている場合、いずれかXNUMXつの条件が永続性をトリガーします。
たとえば、次の XNUMX つの save mn コマンドを設定します。
save 60 10 save 600 20
- Redisキーの値が60秒以内に10回変更されると、永続性がトリガーされます。
- Redisキーが60秒以内に変更され、値の変更が10回未満の場合、RedisはRedisキーが600秒以内に少なくとも20回変更されたかどうかを判断し、変更された場合は永続性をトリガーします。
2. Flushall
- flushallコマンドは、Redisデータベースをフラッシュするために使用されます。
- 実稼働環境では注意して使用する必要があります。
- Redis が flushall コマンドを実行すると、自動永続化がトリガーされ、RDB ファイルがクリアされます。
3.マスター/スレーブ同期トリガー
Redis マスター/スレーブ レプリケーションでは、スレーブ ノードが完全なレプリケーション操作を実行すると、マスター ノードは bgsave コマンドを実行して RDB ファイルをスレーブ ノードに送信します. このプロセスは、Redis の永続性を自動的にトリガーします.
Redisは、コマンドを使用して現在の構成パラメーターを照会できます。
queryコマンドの形式は次のとおりです。config get xxx
たとえば、RDBファイルのストレージ名設定を取得する場合は、次を使用できます。 config get dbfilename
。
実行効果は次のとおりです。
127.0.0.1:6379> config get dbfilename 1) "dbfilename" 2) "dump.rdb"
RedisサーバーはRDBファイルの読み込み時に読み込みが完了するまでブロックするため、時間がかかり、Webサイトにアクセスできない場合があります。
RedisのRDBキャッシュファイルdump.rdbを手動で削除する場合は、次のコマンドを使用して、dump.rdbファイルのストレージパスを見つけることができます▼
find / -name dump.rdb
- 次に、SSH経由でdump.rdbキャッシュファイルを手動で削除します。
RedisはRDBの構成を設定します
RDBの構成の設定に関しては、次のXNUMXつの方法を使用できます。
- Redis構成ファイルを手動で変更する
- コマンド ライン設定を使用します。config set dir "/usr/data" は、RDB ファイルを変更するためのストレージ コマンドです。
注: redis.conf の構成は config get xxx で取得し、config set xxx value で変更できます。Redis 構成ファイルを手動で変更する方法はグローバルに有効です。つまり、Redis サーバーの再起動によって設定されたパラメーターは変更されません。失われますが、コマンドを使用して変更すると、Redis の再起動後に失われます。
ただし、Redis構成ファイルを手動で変更してすぐに有効にする場合は、Redisサーバーを再起動する必要があり、コマンドメソッドではRedisサーバーを再起動する必要はありません。
RDB ファイルの回復
Redisサーバーの起動時に、RDBファイルdump.rdbがRedisルートディレクトリに存在する場合、RedisはRDBファイルを自動的にロードして永続データを復元します。
ルートディレクトリにdump.rdbファイルがない場合は、dump.rdbファイルをRedisのルートディレクトリに移動してください。
もちろん、Redisの起動時にログ情報があり、RDBファイルがロードされているかどうかが示されます。
RDBファイルのロード中、ロードが完了するまでRedisサーバーはブロックします。
これで、RDB の永続性が手動トリガーと自動トリガーの XNUMX つの方法に分けられることがわかりました。
- その利点は、Redisを起動すると、ストレージファイルが小さくなり、データの回復が速くなることです。
- 欠点は、データが失われるリスクがあることです。
RDBファイルの復元も非常に簡単で、RDBファイルをRedisのルートディレクトリに置くだけで、Redisは起動時に自動的にデータを読み込んで復元します。
RDBの長所と短所
1)RDBの利点
RDBのコンテンツはバイナリデータであり、占有するメモリが少なく、コンパクトで、バックアップファイルとして適しています。
RDB はディザスタ リカバリに非常に役立ちます。Redis サービスのリカバリのためにリモート サーバーに高速に転送できる圧縮ファイルです。
メインのRedisプロセスは子プロセスをフォークしてデータをディスクに永続化するため、RDBはRedisの速度を大幅に向上させることができます。
Redisメインプロセスは、ディスクI/Oなどの操作を実行しません。
AOF形式のファイルと比較して、RDBファイルはより速く再起動します。
2)RDBのデメリット
RDB は特定の時間間隔でしかデータを保存できないため、Redis サービスが途中で誤って終了した場合、Redis データは一定期間失われます。
RDBがサブエントリを使用してディスクに保存するために頻繁なフォークを必要とするプロセス。
データセットが大きい場合、フォークに時間がかかる可能性があり、データセットが大きい場合、CPUパフォーマンスが低下し、Redisが数ミリ秒またはXNUMX秒もクライアントにサービスを提供できなくなる可能性があります。
もちろん、永続性を無効にして、Redisの実行効率を向上させることもできます。
データ損失に敏感でない場合は、クライアントが接続したときにこれを行うことができます config set save ""
Redis の永続性を無効にするコマンド。
でredis.conf
、もしあればsave
最初にすべての構成をコメントアウトすると、永続性も無効になりますが、これは通常は行われません。
Hope Chen Weiliang ブログ ( https://www.chenweiliang.com/ ) 共有 "Redis RDB の正式名称は? Redis RDB In-Memory Data Persistence Operation Mode」が役に立ちます。
この記事のリンクを共有することを歓迎します。https://www.chenweiliang.com/cwl-26677.html
Chen WeiliangのブログのTelegramチャンネルへようこそ。最新のアップデートを入手できます!
📚 このガイドには非常に価値のある内容が含まれています。🌟これはめったにない機会です、お見逃しなく! ⏰⌛💨
気に入ったらシェア&いいね!
あなたの共有といいねは、私たちの継続的な動機です!