Redis学習ノート03-永続化

2707 ワード

redisはメモリ型データベースです.これは、ホストが再起動またはダウンタイムすると、メモリ内のデータが空になり、redisがデータを失う可能性があることを意味します.データを保存するためには、redisデータベースのデータをハードディスクに保持し、次回使用する前にメモリを読み返すメカニズムが必要です.このメカニズムをredisの永続化と呼びます.この機構をredisで実現するには,RDBとAOFの2つの方法がある.
1.RDB
1.1 RDB原理
RDBはスナップショット(RDB snapshhot)とも呼ばれ、メモリデータをバイナリシーケンス化して格納し、その記憶構造は非常にコンパクトである.redisのシングルスレッド属性のため、メインプログラムの実行時にI/O操作を行うことができず、スナップショットはI/O操作を行う必要があります.従って、redisにおけるスナップショットの実装は、マルチプロセスのCOW(copy and write)メカニズムを用いて実現される.永続化時にglibc関数fork(ブランチを追加)のサブプロセスを呼び出し、永続化タスクをサブプロセスに振って処理し、親プロセスは顧客要求処理を継続します.サブプロセスは、生成された瞬間のメモリデータのみをコピーし、親プロセスの変更操作とは無関係であるため、redisのこのような永続化をスナップショットと呼ぶ.1.2 RDBがredisを使用するRDBはデフォルトでオンである.RDBを閉じるにはredisを見つける必要がある.confファイル、RDBを閉じるにはredisを見つける必要があります.SNAPSHOTTINGモジュールのデフォルト設定は次のとおりです.
#   save ""
save 900 1
save 300 10
save 60 10000

閉じるときに最初の行のコメントをキャンセルすると、残りの数行のコメントが削除されます.save sec timesのような構成は、redisがsec秒以内にデータtimes回を変更したときにRDBをトリガすることを意味する.起動時にトリガ条件に達すると、ハードディスク上に1つ生成される.rdbファイル、これはスナップショットによって生成されたデータであり、ファイル名はプロファイルdbfilename dump.rdb文を変更することによって完了することができ、ファイルパスはdir ./文を変更し、dirの後にファイル名を含まないパスが続くことに注意する.
2.AOF
2.1 AOF原理AOFログには、redisサーバのシーケンス命令が格納され、変更操作のみが記録される.redisは、再起動後にAOFログのコマンドを再生することによって永続化を完了する.サーバが修正命令操作を受けると、命令のパラメータチェック、論理処理を行い、問題がないことを確認してからAOFログに書き込まれ、格納された命令が正しいことを保証します.これは,サーバの稼働時間がかなり長くなるとAOFログが非常に大きくなるため,定期的にAOFの痩身(書き換え)を行わなければならないことを意味する.redisはbgrewriteaof命令を提供してAOFログを痩せる.その原理は、サブプロセスを開いてメモリを遍歴し、一連のredis操作命令に変換し、新しいAOFログファイルにシーケンス化することである.シーケンス化が完了してから操作中に発生したAOF増分が新しいAOFログファイルに追加され、追加が完了するとすぐに古いログファイルの代わりに新しいログファイルが使用され、ダイエットが完了します.生産環境では、AOFの操作は通常1 s書き込みである.この操作はI/O操作であるため速度が遅い.ディスクを同期するタイミングだけをシステムに決定させるとデータセキュリティが低下し、命令を変更するたびにトリガーされると速度が遅くなる.2.2 AOFはAOFを使用してデフォルトでオフになっています.プロファイルAPPEND ONLY MODEモジュールの下のappendonly no文のnoをyesに変更することで開くことができます.変更:appendfilename "appendonly.aof"文はファイル名を変更します.トリガポリシーには、#appendfsync always appendfsync everysec#appendfsync noのデフォルトでは1秒に1回書きます.最初の行は、書くたびにaofファイルにすぐに書き込まれることを示します.3行目はすぐにブラシをかけないで、オペレーティングシステムがブラシを必要とするときだけブラシをかけます.
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

上記の2つの構成はredisの書き換えポリシーであり、最初の行は、AOFログのサイズが指定されたパーセント(前回の書き換え時と比較してAOFファイルのサイズ)に達した場合、RedisはBGREWRITEAOFによってAOFログファイルを自動的に書き換えることができることを示している.2行目は、指定したサイズに達すると書き換えられます.
3.混合持久化
redisサービスを再起動する場合、書き換えポリシーのため、RDBは少なくとも5分で1回書き換えられるため、大量のデータが失われる可能性があり、AOF永続化を採用するとファイルの体積が大きすぎるため、redis 4.0の後にハイブリッドポリシーが採用され、永続化が実現されます.その実現原理は、redisが再起動すると、rdbのコンテンツをロードしてから、インクリメンタルAOFのログを再生し、再起動効率を大幅に向上させることである.ブレンド永続化をオンにするには、プロファイルに2つの場所を設定する必要があります.
appendonly yes
aof-use-rdb-preamble yes