検索
ホームページデータベースRedisRedis 永続化のスナップショット メソッド (RDB) の詳細については、こちらをご覧ください。

この記事では、Redis 永続化におけるスナップショット方式 (RDB) について紹介します。一定の参考値があるので、困っている友達が参考になれば幸いです。

Redis 永続化のスナップショット メソッド (RDB) の詳細については、こちらをご覧ください。

Redis はメモリ上で読み書きを行うため、パフォーマンスは高いですが、サーバーの再起動によりメモリ上のデータが失われます。 Redis の再起動時に元のデータをディスクから復元できるように、メモリ内のデータをディスクに保存する必要があります。このプロセス全体を Redis 永続化と呼びます。

Redis 永続化のスナップショット メソッド (RDB) の詳細については、こちらをご覧ください。
Memcached には永続化機能がないため、Redis の永続化も Redis と Memcached の主な違いの 1 つです。

1. いくつかの永続化メソッド

Redis の永続化には次の 3 つのメソッドがあります:

  • スナップショット メソッド(RDB、Redis Database)特定の瞬間のメモリ データをバイナリ形式でディスクに書き込みます。
  • ファイル追加メソッド (AOF、Append Only File) は、すべての操作コマンドを記録し、テキストとしてファイルに書き込みます。 form;
  • ハイブリッド永続化メソッド、Redis 4.0 以降の新しいメソッドです。ハイブリッド永続化は、RDB と AOF の利点を組み合わせたものです。書き込み時には、まず現在のデータをファイルの先頭に書き込みます。 RDB形式で保存し、以降の運用コマンドをAOF形式でファイルに保存することで、Redisの再起動速度を確保できるだけでなく、データ損失のリスクも軽減できます。

各永続性ソリューションには特定の使用シナリオがあるため、RDB 永続性から始めましょう。

2. RDB の概要

RDB (Redis Database) は、特定の瞬間のメモリ スナップショット (スナップショット) をバイナリ形式でディスクに書き込むプロセスです。

3. 永続化トリガー

RDB の永続化トリガー方法には、手動トリガーと自動トリガーの 2 種類があります。

1) 手動トリガー

手動トリガーの永続化操作には、savebgsave の 2 つがあります。それらの主な違いは、ブロックするかどうかに反映されます。 Redis メインスレッドの実行。

① save コマンド

クライアントで save コマンドを実行すると、Redis の永続化がトリガーされますが、同時に Redis はブロックされるまでブロック状態になります。 RDB は永続化されます。完了すると、他のクライアントから送信されたコマンドに応答するため、運用環境では を注意して使用する必要があります。

save コマンドは次のように使用されます。

Redis 永続化のスナップショット メソッド (RDB) の詳細については、こちらをご覧ください。

図からわかるように、

save を実行した後、 コマンドにより、永続化ファイル dump.rdb の変更時間が変更されます。これは、save が RDB 永続化を正常にトリガーしたことを意味します。

save コマンドの実行処理は下図のとおりです。

Redis 永続化のスナップショット メソッド (RDB) の詳細については、こちらをご覧ください。##② bgsave コマンド

bgsave (

save

コマンドとの最大の違いは、bgsave が子プロセスを fork() して永続化を実行することです。プロセス全体では、fork のみが実行されます。 () 子プロセス 短いブロッキングが発生する場合があります。子プロセスが作成された後、Redis のメイン プロセスは他のクライアントのリクエストに応答できます。プロセス全体をブロックする save コマンドと比較すると、明らかに、 bgsave コマンドの方が使用に適しています。 bgsave
コマンドは次の図のように使用されます。

Redis 永続化のスナップショット メソッド (RDB) の詳細については、こちらをご覧ください。##bgsave

実行プロセスは次のとおりです。下の図:

2) 自動トリガーRedis 永続化のスナップショット メソッド (RDB) の詳細については、こちらをご覧ください。

RDB の手動トリガー方法について説明した後、RDB 永続性を自動的にトリガーする方法を見てみましょう。

RDB の自動永続化は主に次の状況で発生します。

① save m n

save m n

は、n 個のキーが m 秒以内に変更されると、永続化が自動的にトリガーされることを意味します。

パラメータ m および n は、Redis 構成ファイルにあります。たとえば、save 60 1 は、60 秒以内に少なくとも 1 つのキーが変更された場合に、RDB 永続化がトリガーされることを示します。
永続性を自動的にトリガーする: 本質的には、設定されたトリガー条件が満たされた場合に、Redis が bgsave コマンドを 1 回自動的に実行するということです。
注: 複数の save m n コマンドを設定すると、いずれかの条件が満たされた場合に永続化がトリガーされます。 たとえば、次の 2 つの save m n コマンドを設定します。

  • save 60 10
  • save 600 1

Redis キーの値が 60 秒以内に 10 回変更されると、永続化がトリガーされます。Redis キーの値が 60 秒以内に変更されると、永続化がトリガーされます。キー値の変更が 10 回未満の場合、Redis は Redis のキー値が 600 秒以内に少なくとも 1 回変更されたかどうかを判断し、変更された場合には永続化がトリガーされます。

②lushall

flushall コマンドは、Redis データベースをクリアするために使用されます。運用環境では注意して使用する必要があります。Redis が flushall# を実行するとき、 ## コマンドを実行すると、自動永続化がトリガーされ、RDB ファイルがクリアされます。 実行結果は以下の図に示されています。

Redis 永続化のスナップショット メソッド (RDB) の詳細については、こちらをご覧ください。

③ マスター/スレーブ同期トリガー

Redis マスター/スレーブ レプリケーションでは、スレーブがノードが完全なレプリケーション操作を実行すると、マスター ノードは

bgsave コマンドを実行し、RDB ファイルをスレーブ ノードに送信します。このプロセスにより、Redis 永続性が自動的にトリガーされます。

4. 設定手順

RDB の設定を適切に行うことで、Redis を効率的かつ安定的に動作させることができます。

RDB 構成パラメーターは Redis 構成ファイルにあります。具体的な内容は次のとおりです:

# RDB 保存的条件
save 900 1
save 300 10
save 60 10000

# bgsave 失败之后,是否停止持久化数据到磁盘,yes 表示停止持久化,no 表示忽略错误继续写文件。
stop-writes-on-bgsave-error yes

# RDB 文件压缩
rdbcompression yes

# 写入文件和读取文件时是否开启 RDB 文件检查,检查是否有无损坏,如果在启动是检查发现损坏,则停止启动。
rdbchecksum yes

# RDB 文件名
dbfilename dump.rdb

# RDB 文件目录
dir ./

より重要なパラメーターは次のとおりです。


① save パラメータRDB の永続化条件をトリガーするパラメータを設定するために使用され、保存条件が満たされた場合にデータがハードディスクに永続化されます。
デフォルト設定の説明は次のとおりです:

    save 900 1: 900 秒以内に少なくとも 1 つのキー値が変更された場合、データがハードディスクに保存されることを示します。
  • save 300 10: 300 秒以内に少なくとも 10 個のキー値が変更された場合、データがハードディスクに永続化されることを示します;
  • save 60 10000: 少なくとも 10,000 個のキー値が変更された場合にデータが永続化されることを示します60 秒以内に変更すると、データはハードドライブに保存されます。
② rdbcompression パラメータ

デフォルト値は yes
で、RDB ファイル圧縮を有効にすることを意味します。Redis は圧縮に LZF アルゴリズムを使用します。ファイル圧縮に CPU パフォーマンスを消費したくない場合は、この機能をオフに設定できますが、この機能の欠点は、ファイルの保存に多くのディスク容量が必要になることです。 ③ rdbchecksum パラメータ
デフォルト値は yes
で、ファイルの書き込みおよび読み取り時に RDB ファイルチェックを有効にし、破損がないかどうかをチェックするかどうかを示します。起動中に破損が発見された場合は起動を停止させていただきます。 5. 構成クエリ

コマンドを使用して、Redis の現在の構成パラメーターをクエリできます。クエリコマンドの形式は:

config get xxx

たとえば、RDB ファイルのストレージ名の設定を取得したい場合は、config get dbfilename を使用できます。

Redis 永続化のスナップショット メソッド (RDB) の詳細については、こちらをご覧ください。RDB のファイル ディレクトリをクエリするには、コマンド

config get dir

を使用します。

Redis 永続化のスナップショット メソッド (RDB) の詳細については、こちらをご覧ください。6. 構成設定

以下の 2 つの RDB 構成を設定します。方法:

Redis 構成ファイルを手動で変更します。
  • コマンド ライン設定を使用します。たとえば、
  • config set dir "/usr/data"
  • を使用します。 RDB格納ディレクトリを変更します。
Note

: Redis 構成ファイルを手動で変更する方法はグローバルに有効です。つまり、Redis サーバーの再起動によって設定パラメータが失われることはなく、コマンド変更方法を使用します。 、Redisを再起動すると、失われます。ただし、Redis 構成ファイルを手動で変更してすぐに有効にする場合は、Redis サーバーを再起動する必要がありますが、コマンド方式では Redis サーバーを再起動する必要はありません。

ヒント: Redis 構成ファイルは Redis インストール ディレクトリのルート パスにあり、デフォルト名は redis.conf です。

7.RDB ファイルのリカバリ

Redis サーバーの起動時に、RDB ファイル dump.rdb が Redis ルート ディレクトリに存在する場合、Redis は自動的に RDB ファイルをロードして永続データを復元します。
ルート ディレクトリに dump.rdb ファイルがない場合は、まず dump.rdb ファイルを Redis のルート ディレクトリに移動してください。
RDB ファイルがロードされているかどうかを確認する
Redis には、RDB ファイルがロードされているかどうかを示す起動時のログ情報があります。Redis 起動コマンド src/redis- を実行します。以下の図に示すように、server redis.conf:

Redis 永続化のスナップショット メソッド (RDB) の詳細については、こちらをご覧ください。

ログから、Redis サービスがRDBファイルは起動時に正常に起動されました。

ヒント: Redis サーバーが RDB ファイルをロードしている間、ロード作業が完了するまでブロックされます。

8.RDB のメリットとデメリット

1) RDB のメリット

  • RDB コンテンツはバイナリ データであり、メモリ使用量が少なく、よりコンパクトで、より適しています。バックアップ ファイルとして;
  • RDB は災害復旧に非常に役立ちます。コンパクトなファイルなので、Redis サービスの回復のためにリモート サーバーにより速く転送できます。
  • RDB は Redis をより優れたレベルに改善できます。エクステント 実行速度は、Redis メイン プロセスがデータをディスクに永続化するたびに子プロセスを fork() するためです。Redis メイン プロセスはディスク I/O などの操作を実行しません。
  • AOF を使用すると、RDB ファイルは形式のファイルよりも高速に再起動できます。

2) RDB のデメリット

  • RDB は一定期間のデータしか保存できないため、Redis サービスが誤って途中で終了すると、一定期間分のデータが保存されなくなります。 Redis データ;
  • RDB では、子プロセスを使用してデータをディスク上に保持するために頻繁に fork() が必要です。データ セットが大きい場合、Fork() は時間がかかる可能性があり、データ セットが大きく CPU パフォーマンスが低い場合には、Redis が数ミリ秒、さらには 1 秒間クライアントへのサービスを停止する可能性があります。

9. 永続性を無効にする

永続性を無効にすると、Redis の実行効率が向上します。データ損失を気にしない場合は、クライアントへの接続中に実行できます次の図に示すように、config set save "" コマンドを使用して Redis の永続性を無効にすることができます:
Redis 永続化のスナップショット メソッド (RDB) の詳細については、こちらをご覧ください。

10. 概要

この記事を通じて、次のことが得られます。ご存知のとおり、RDB の永続化には手動トリガーと自動トリガーの 2 つの方法があり、保存ファイルが小さく Redis 起動時のデータ復旧が早いというメリットがありますが、デメリットとしてはデータ損失のリスクがあります。 RDBファイルのリストアも非常に簡単で、RDBファイルをRedisのルートディレクトリに置くだけで、Redis起動時に自動的にデータが読み込まれてリストアされます。

11. 考えられる質問

Redis サーバーの CPU 使用率が高すぎる場合、原因は何でしょうか?コメント欄に回答を書いていただければ幸いです。

12.参考文献と謝辞

https://redis.io/topics/persistence
https://blog.csdn.net/ qq_36318234/article/details/79994133
https://www.cnblogs.com/ysocean/p/9114268.html
https://www.cnblogs. com/wdliu/p/9377278.html

この記事は、https://segmentfault.com/a/1190000021036574

から転載されています。Redis の詳細については、次の点にご注意ください。 redis 入門チュートリアル 列。

以上がRedis 永続化のスナップショット メソッド (RDB) の詳細については、こちらをご覧ください。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はsegmentfaultで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
Redis:一般的なデータ構造のガイドRedis:一般的なデータ構造のガイドApr 11, 2025 am 12:04 AM

Redisは、次のようなさまざまなデータ構造をサポートしています。1。文字列、単一価値データの保存に適しています。 2。キューやスタックに適したリスト。 3.非重複データの保存に使用されるセット。 4。ランキングリストと優先キューに適した注文セット。 5。オブジェクトまたは構造化されたデータの保存に適したハッシュテーブル。

Redisカウンターを実装する方法Redisカウンターを実装する方法Apr 10, 2025 pm 10:21 PM

Redisカウンターは、R​​edisキー価値ペアストレージを使用して、カウンターキーの作成、カウントの増加、カウントの減少、カウントのリセット、およびカウントの取得など、カウント操作を実装するメカニズムです。 Redisカウンターの利点には、高速速度、高い並行性、耐久性、シンプルさと使いやすさが含まれます。ユーザーアクセスカウント、リアルタイムメトリック追跡、ゲームのスコアとランキング、注文処理などのシナリオで使用できます。

Redisコマンドラインの使用方法Redisコマンドラインの使用方法Apr 10, 2025 pm 10:18 PM

Redisコマンドラインツール(Redis-Cli)を使用して、次の手順を使用してRedisを管理および操作します。サーバーに接続し、アドレスとポートを指定します。コマンド名とパラメーターを使用して、コマンドをサーバーに送信します。ヘルプコマンドを使用して、特定のコマンドのヘルプ情報を表示します。 QUITコマンドを使用して、コマンドラインツールを終了します。

Redisクラスターモードの構築方法Redisクラスターモードの構築方法Apr 10, 2025 pm 10:15 PM

Redisクラスターモードは、シャードを介してRedisインスタンスを複数のサーバーに展開し、スケーラビリティと可用性を向上させます。構造の手順は次のとおりです。異なるポートで奇妙なRedisインスタンスを作成します。 3つのセンチネルインスタンスを作成し、Redisインスタンスを監視し、フェールオーバーを監視します。 Sentinel構成ファイルを構成し、Redisインスタンス情報とフェールオーバー設定の監視を追加します。 Redisインスタンス構成ファイルを構成し、クラスターモードを有効にし、クラスター情報ファイルパスを指定します。各Redisインスタンスの情報を含むnodes.confファイルを作成します。クラスターを起動し、CREATEコマンドを実行してクラスターを作成し、レプリカの数を指定します。クラスターにログインしてクラスター情報コマンドを実行して、クラスターステータスを確認します。作る

Redisキューの読み方Redisキューの読み方Apr 10, 2025 pm 10:12 PM

Redisのキューを読むには、キュー名を取得し、LPOPコマンドを使用して要素を読み、空のキューを処理する必要があります。特定の手順は次のとおりです。キュー名を取得します:「キュー:キュー」などの「キュー:」のプレフィックスで名前を付けます。 LPOPコマンドを使用します。キューのヘッドから要素を排出し、LPOP Queue:My-Queueなどの値を返します。空のキューの処理:キューが空の場合、LPOPはnilを返し、要素を読む前にキューが存在するかどうかを確認できます。

Redisクラスターzsetの使用方法Redisクラスターzsetの使用方法Apr 10, 2025 pm 10:09 PM

RedisクラスターでのZsetの使用:Zsetは、要素をスコアに関連付ける順序付けられたコレクションです。シャード戦略:a。ハッシュシャーディング:ZSTキーに従ってハッシュ値を分配します。 b。範囲シャード:要素スコアに従って範囲に分割し、各範囲を異なるノードに割り当てます。操作の読み取りと書き込み:a。読み取り操作:ZSetキーが現在のノードのシャードに属している場合、ローカルで処理されます。それ以外の場合は、対応するシャードにルーティングされます。 b。書き込み操作:Zsetキーを保持しているシャードに常にルーティングされます。

Redisデータをクリアする方法Redisデータをクリアする方法Apr 10, 2025 pm 10:06 PM

Redisデータをクリアする方法:Flushallコマンドを使用して、すべての重要な値をクリアします。 FlushDBコマンドを使用して、現在選択されているデータベースのキー値をクリアします。 [選択]を使用してデータベースを切り替え、FlushDBを使用して複数のデータベースをクリアします。 DELコマンドを使用して、特定のキーを削除します。 Redis-CLIツールを使用してデータをクリアします。

Redisの有効期限ポリシーを設定する方法Redisの有効期限ポリシーを設定する方法Apr 10, 2025 pm 10:03 PM

Redisデータの有効期間戦略には2つのタイプがあります。周期削除:期限切れのキーを削除する定期的なスキャン。これは、期限切れの時間帯-remove-countおよび期限切れの時間帯-remove-delayパラメーターを介して設定できます。怠zyな削除:キーが読み取られたり書かれたりした場合にのみ、削除の有効期限が切れたキーを確認してください。それらは、レイジーフリーレイジーエビクション、レイジーフリーレイジーエクスピア、レイジーフリーラジーユーザーのパラメーターを介して設定できます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい