目次
RDB 永続性
手動で
自動トリガー
AOF 永続性
AOF の書き換えは、手動トリガーと自動トリガーにも分かれています
ホームページ データベース Redis Redis 永続性を実装する方法

Redis 永続性を実装する方法

May 30, 2023 am 09:14 AM
redis

Redis は、高度なキーと値のデータベースです。 memcached に似ていますが、データを永続化でき、幅広いデータ型をサポートします。文字列、リンク リスト、セット、ソート セットがあります。サーバー側でのセットの和集合、共通集合、補数(差分)の計算をサポートし、さまざまなソート機能もサポートします。

Redis 永続性を実装する方法

Redis は、RDB と AOF という 2 つの永続化メカニズムをサポートしています。永続化により、プロセスの異常終了やダウンタイムによるデータ損失を回避でき、次回の再起動前に使用できます。永続化ファイルは有効です。データ復旧。

RDB 永続性

RDB 永続性は、圧縮されたバイナリ ファイルのスナップショットを作成することによって、特定の時点での完全なデータを保存する永続化方法です。 RDB 永続化は、Redis のデフォルトの永続化方法です。 RDB 永続化のトリガーには、手動トリガーと自動トリガーが含まれます。

手動で

save をトリガーします。コマンド ラインで保存コマンドを実行します。スナップショットを保存するために rdb ファイルが同期的に作成されます。これにより、サーバーのメイン プロセスがブロックされます。使用しないでください。本番環境の bgsave コマンド内 bgsave コマンドを実行すると、子プロセスをフォークして rdb ファイルが非同期に作成され、スナップショットが保存されます。フォーク中のブロックを除き、子プロセスが rdb ファイルを作成すると、メイン プロセスは続行できますリクエストを処理するには

自動トリガー

redis.conf で save m n が定期的にトリガーされるように設定します。たとえば、save 900 1 は、900 秒以内に少なくとも 1 つの更新がある場合、master-スレーブ レプリケーションがトリガーされます。スレーブ ノードがフル レプリケーション操作を実行すると、マスター ノードは自動的に bgsave を実行して RDB. ファイルを生成し、スレーブ ノードに送信してデバッグ リロード コマンドを実行します。Redis をリロードすると、シャットダウンが実行され、AOF 永続化が行われます。 redis.conf の RDB 永続性設定

# 只要满足下列条件之一,则会执行bgsave命令save 900 1 # 在900s内存在至少一次写操作save 300 10
save 60 10000# 禁用RBD持久化,可在最后加 save ""# 当备份进程出错时主进程是否停止写入操作stop-writes-on-bgsave-error yes# 是否压缩rdb文件 推荐no 相对于硬盘成本cpu资源更贵rdbcompression no
ログイン後にコピー

AOF 永続性

AOF (Append-Only-File) 永続性は、データベースのステータスを変更するすべての命令を記録し、AOF ファイルに追加します。追加の形式で。これを書き換える 1 つの方法は次のとおりです。 サーバーが再起動されると、AOF ファイルに記録されているコマンドを使用して、以前にシャットダウンされたときのデータベースの状態を復元できます。

redis.conf の AOF 永続性構成は次のとおりです

# 默认关闭AOF,若要开启将no改为yesappendonly no# append文件的名字appendfilename "appendonly.aof"# 每隔一秒将缓存区内容写入文件 默认开启的写入方式appendfsync everysec# 当AOF文件大小的增长率大于该配置项时自动开启重写(这里指超过原大小的100%)。auto-aof-rewrite-percentage 100# 当AOF文件大小大于该配置项时自动开启重写auto-aof-rewrite-min-size 64mb
ログイン後にコピー

AOF 永続性の実装には 3 つのステップが含まれます:

コマンドの追加: AOF バッファー ファイルにコマンドを追加します。 to write 入力: バッファーの内容が AOF ファイルに書き込まれます。 ファイル保存: AOF ファイルがディスクに保存されます。最後の 2 つのステップの頻度は、appendfsync によって構成されます。appendfsync のオプションには、

always が含まれますセキュリティ 最高、失われるのは最大でも 1 つのコマンドのデータだけですが、パフォーマンスも最低です (頻繁なディスク IO) 毎秒、1 秒に 1 回保存、推奨、セキュリティとパフォーマンスの妥協点、最大 1 秒間はデータ損失なし、オペレーティング システムによる実行 (通常は 30 秒に 1 回)、セキュリティは最低、パフォーマンスは最高 オペレーティング システムが最後に AOF で SAVE 操作をトリガーした後のデータファイルが失われます。AOF は、save コマンドによって保持されます。時間が経つにつれて、AOF ファイルはますます大きくなります。Redis は、AOF ファイルを書き換えることで、AOF ファイルの増加の問題を解決します (これにより、ファイルのディスク占有量が減り、データの速度が向上します)

子プロセスを作成するためにフォークを呼び出します

子プロセスは、現在のデータベースのステータスを読み取り、新しい AOF ファイルを「書き換え」ます (ただし、ここでは「再書き込み」と呼ばれますが、実際には古いファイルは読み取られませんが、命令はデータベースの現在のステータスに基づいて形成されます)

メイン プロセスは、AOF 再書き込みバッファと元のファイルに新しい変更を書き込み続けます。同時に AOF バッファを取得します。

メイン プロセスは子プロセスの書き換えを取得します。AOF 完了のシグナルを書き込み、信号処理関数を呼び出して AOF 書き換えバッファの内容を新しい AOF ファイルに書き込み、新しい AOF ファイルの名前を変更します。ファイルを削除し、元の AOF ファイルをアトミックに上書きし、古いファイルと新しいファイルの置換を完了します

AOF の書き換えは、手動トリガーと自動トリガーにも分かれています
手动触发: 直接调用bgrewriteaof命令
自动触发: 根据auto-aof-rewrite-min-size和auto-aof-rewrite-percentage参数确定自动触发时机。其中auto-aof-rewrite-min-size表示运行AOF重写时文件最小体积,默认为64MB。auto-aof-rewrite-percentage表示当前AOF文件大小(aof_current_size)和上一次重写后AOF文件大小(aof_base_size)的比值。自动触发时机为 aof_current_size > auto-aof-rewrite-min-size &&(aof_current_size - aof_base_size)/aof_base_size> = auto-aof-rewrite-percentage
ログイン後にコピー
##RDB と AOF
RDB と AOF にはそれぞれ長所と短所があります。

RDB の利点: AOF と比較して、RDB ファイルが比較的小さく、データの回復が高速です (理由についてはデータ回復のセクションを参照してください) RDB の欠点: サーバーがダウンすると、RBD メソッドは最後のデータを失います。 RDB の永続化 bgsave を使用して子プロセスをフォークした後のデータはメモリを消費します。 AOF の利点: AOF はファイルの追加のみを行い、サーバーのパフォーマンスへの影響が少なく、RDB より高速で、メモリ消費量が少なく、可読性が高くなります。 AOF を使用すると、生成されるファイルが比較的大きくなり、AOF で書き換えても依然として比較的大きいままであると同時に、データの回復速度も RDB に比べて遅いという 2 つのデメリットがあります。データベースリカバリ

AOF永続化機能がオンになっていない場合、サーバー起動時にRDBファイルの自動読み込み中にメインプロセスがブロックされてしまいます。 AOF 永続化機能がオンになっている場合、通常、AOF ファイルの更新頻度が RDB ファイルよりも高く、保存されたデータがより完全であるため、サーバーは AOF ファイルの使用を優先してデータベースの状態を復元します。

Redis データベース復旧の処理フローは次のとおりです。

データ復旧に関しては、次の 2 つの理由により RDB の起動時間が短くなります。ファイル、それぞれ 1 つのデータ項目に複数の操作レコードが存在する可能性がある AOF ログとは異なり、各データ項目にレコードは 1 つだけあります。したがって、各データは 1 回だけ書き込む必要があり、ファイルは比較的小さいです。

RDB 文件的存储格式和Redis数据在内存中的编码格式是一致的,不需要再进行数据编码工作,所以在CPU消耗上要远小于AOF日志的加载。

但是在进行RDB持久化时,fork出来进行dump操作的子进程会占用与父进程一样的内存,采用的copy-on-write机制,对性能的影响和内存的消耗都是比较大的。比如16G内存,Redis已经使用了10G,这时save的话会再生成10G,变成20G,大于系统的16G。这时候会发生交换,要是虚拟内存不够则会崩溃,导致数据丢失。所以在用redis的时候一定对系统内存做好容量规划。

RDB、AOF混合持久化

Redis从4.0版开始支持RDB与AOF的混合持久化方案。首先由RDB定期完成内存快照的备份,然后再由AOF完成两次RDB之间的数据备份,由这两部分共同构成持久化文件。这个方案的优势在于其充分利用了RDB加载速度快、备份体积小以及AOF记录数据丢失几率尽可能低的特点。缺点是兼容性差,一旦开启了混合持久化,在4.0之前的版本都不识别该持久化文件,同时由于前部分是RDB格式,阅读性较低。

开启混合持久化

aof-use-rdb-preamble yes
ログイン後にコピー

数据恢复加载过程就是先按照RDB进行加载,然后把AOF命令追加写入。

持久化方案的建议 如果Redis只是用来做缓存服务器,比如数据库查询数据后缓存,那可以不用考虑持久化,因为缓存服务失效还能再从数据库获取恢复。建议同时采用两种持久化方式,以提高数据的安全性。如果你可以容忍在灾难发生时数据丢失几分钟,那么可以仅使用RDB。一般的设计方法是 使用主从复制机制以解决持久化时所带来的性能影响。即Master上RDB、AOF都不做,保证Master的读写性能,而Slave上则同时开启RDB和AOF(或4.0以上版本的混合持久化方式)来进行持久化,保证数据的安全性。

以上がRedis 永続性を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホット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ヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Windows 11 10.0.22000.100 のインストール時の 0x80242008 エラーの解決策 Windows 11 10.0.22000.100 のインストール時の 0x80242008 エラーの解決策 May 08, 2024 pm 03:50 PM

1. [スタート]メニューを起動し、[cmd]と入力し、[コマンドプロンプト]を右クリックし、[管理者として実行]を選択します。 2. 次のコマンドを順番に入力します (注意してコピーして貼り付けてください): SCconfigwuauservstart=auto、Enter キーを押す SCconfigbitsstart=auto、Enter キーを押す SCconfigcryptsvcstart=auto、Enter キーを押す SCconfigtrustedinstallerstart=auto、Enter キーを押す SCconfigwuauservtype=share、Enter キーを押す netstopwuauserv 、enter netstopcryptS を押す

PHP機能のボトルネックを分析し、実行効率を向上 PHP機能のボトルネックを分析し、実行効率を向上 Apr 23, 2024 pm 03:42 PM

PHP 関数のボトルネックはパフォーマンスの低下につながります。これは、ボトルネック関数を特定し、パフォーマンス分析ツールを使用するという手順で解決できます。結果をキャッシュして再計算を減らします。タスクを並列処理して実行効率を向上させます。文字列の連結を最適化し、代わりに組み込み関数を使用します。カスタム関数の代わりに組み込み関数を使用します。

Golang API のキャッシュ戦略と最適化 Golang API のキャッシュ戦略と最適化 May 07, 2024 pm 02:12 PM

GolangAPI のキャッシュ戦略により、パフォーマンスが向上し、サーバーの負荷が軽減されます。一般的に使用される戦略は、LRU、LFU、FIFO、TTL です。最適化手法には、適切なキャッシュ ストレージの選択、階層型キャッシュ、無効化管理、監視とチューニングが含まれます。実際には、データベースからユーザー情報を取得する API を最適化するために LRU キャッシュが使用されます。それ以外の場合は、データベースからデータを取得した後にキャッシュを更新できます。

PHP 開発におけるキャッシュ メカニズムとアプリケーションの実践 PHP 開発におけるキャッシュ メカニズムとアプリケーションの実践 May 09, 2024 pm 01:30 PM

PHP 開発では、キャッシュ メカニズムにより、頻繁にアクセスされるデータがメモリまたはディスクに一時的に保存され、データベース アクセスの数が削減され、パフォーマンスが向上します。キャッシュの種類には主にメモリ、ファイル、データベース キャッシュが含まれます。キャッシュは、組み込み関数またはサードパーティのライブラリ (cache_get() や Memcache など) を使用して PHP に実装できます。一般的な実用的なアプリケーションには、データベース クエリ結果をキャッシュしてクエリ パフォーマンスを最適化したり、ページ出力をキャッシュしてレンダリングを高速化したりすることが含まれます。キャッシュ メカニズムにより、Web サイトの応答速度が効果的に向上し、ユーザー エクスペリエンスが向上し、サーバーの負荷が軽減されます。

PHP 配列のページネーションで Redis キャッシュを使用するにはどうすればよいですか? PHP 配列のページネーションで Redis キャッシュを使用するにはどうすればよいですか? May 01, 2024 am 10:48 AM

Redis キャッシュを使用すると、PHP 配列ページングのパフォーマンスを大幅に最適化できます。これは、次の手順で実現できます。 Redis クライアントをインストールします。 Redisサーバーに接続します。キャッシュ データを作成し、データの各ページをキー「page:{page_number}」を持つ Redis ハッシュに保存します。キャッシュからデータを取得し、大規模な配列での高コストの操作を回避します。

Win11 英語 21996 を簡体字中国語 22000 にアップグレードする方法_Win11 英語 21996 を簡体字中国語 22000 にアップグレードする方法 Win11 英語 21996 を簡体字中国語 22000 にアップグレードする方法_Win11 英語 21996 を簡体字中国語 22000 にアップグレードする方法 May 08, 2024 pm 05:10 PM

まず、システム言語を簡体字中国語表示に設定して再起動する必要があります。もちろん、以前に表示言語を簡体字中国語に変更したことがある場合は、この手順をスキップできます。次に、レジストリ regedit.exe の操作を開始し、左側のナビゲーション バーまたは上部のアドレス バーで HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlNlsLanguage に直接移動し、InstallLanguage キーの値と Default キーの値を 0804 に変更します (英語に変更する場合)。まずシステムの表示言語を en-us に設定し、システムを再起動してから、すべてを 0409 に変更します) この時点でシステムを再起動する必要があります。

navicat は redis に接続できますか? navicat は redis に接続できますか? Apr 23, 2024 pm 05:12 PM

はい、Navicat は Redis に接続できます。これにより、ユーザーはキーの管理、値の表示、コマンドの実行、アクティビティの監視、問題の診断が可能になります。 Redis に接続するには、Navicat で「Redis」接続タイプを選択し、サーバーの詳細を入力します。

Win11でダウンロードしたアップデートファイルの探し方_Win11でダウンロードしたアップデートファイルの場所を共有する Win11でダウンロードしたアップデートファイルの探し方_Win11でダウンロードしたアップデートファイルの場所を共有する May 08, 2024 am 10:34 AM

1. まず、デスクトップ上の[このPC]アイコンをダブルクリックして開きます。 2. 次に、マウスの左ボタンをダブルクリックして [C ドライブ] に入ります。システム ファイルは通常、自動的に C ドライブに保存されます。 3. 次に、C ドライブで [windows] フォルダーを見つけ、ダブルクリックしてに入ります。 4. [windows]フォルダーに入ったら、[SoftwareDistribution]フォルダーを見つけます。 5. 入力後、win11 のダウンロード ファイルとアップデート ファイルがすべて含まれている [ダウンロード] フォルダーを見つけます。 6. これらのファイルを削除したい場合は、このフォルダー内で直接削除してください。

See all articles