この記事では、Redis に関する関連知識を紹介しており、高可用性アーキテクチャの構築から原理分析まで、関連する内容を中心に紹介していますので、一緒に見ていきましょう。 . .
推奨学習: Redis ビデオ チュートリアル
会社の最近のシステム最適化により、大きなテーブルがいくつかのテーブルに分割されました。前に、今度は再び redis を実行します。 redis に関しては、redis サービスを Alibaba Cloud から自社サーバーに移行することが要件の 1 つです (会社の性質上)。この機会を利用して、Redis の高可用性クラスター アーキテクチャを確認してみました。 Redis クラスター モードには、マスター/スレーブ レプリケーション モード、センチネル モード、クラスター クラスター モードの 3 つがあり、一般的にはセンチネル クラスターとクラスター クラスターの使用頻度が高くなります。これら 3 つのモードについて簡単に理解しましょう。
永続化メカニズム
クラスター アーキテクチャを理解する前に、最初に Redis の永続化メカニズムを紹介する必要があります。これは、永続化が後続のクラスターに関係するためです。 Redis の永続性とは、Redis サービスがダウンしたときにクラスター アーキテクチャでのデータの回復やマスター/スレーブ ノードのデータ同期を防ぐために、いくつかのルールに従ってメモリにキャッシュされたデータを保存することです。 Redis 永続化には RDB と AOF の 2 つの方法があり、バージョン 4.0 以降、新しいハイブリッド永続化モードが導入されました。
RDB
RDB は、redis によってデフォルトで有効になっている永続化メカニズムです。その永続化メソッドは、ユーザーによって構成されたルールに基づいています。「X 秒以内に少なくとも Y 個の変更が発生しました」
、スナップショットを生成し、それを dump.rdb バイナリ ファイルに保存します。デフォルトでは、redis は 3 つの構成で構成されています: 900 秒以内に少なくとも 1 つのキャッシュ キーの変更が発生した、300 秒以内に少なくとも 10 のキャッシュ キーの変更が発生した、および 60 秒以内に少なくとも 10,000 の変更が発生した。
Redis の自動スナップショット永続データに加えて、メモリ データの手動スナップショットに役立つ 2 つのコマンドがあります。これらの 2 つのコマンドは、save
and# です。 ##bgs保存。
save: データ スナップショットを同期的に実行します。キャッシュされたデータの量が多い場合、キャッシュされたデータがブロックされます。他のコマンドの実行効率が低い。
bgsave: 非同期でデータ スナップショットを実行します。Redis メイン スレッドは、データ スナップショットを実行するために子プロセスをフォークアウトします。これにより、他のプロセスの実行がブロックされません。コマンドにより効率が向上します。非同期スナップショットが使用されるため、スナップショットのプロセス中に他のコマンドによってデータが変更される可能性があります。この問題を回避するために、reids ではコピーオンライト (Cpoy-On-Write) 方式を採用しており、このときスナップショットを取得するプロセスはメインスレッドによってフォークされるため、メインスレッドのリソースを享受することができます。スナップショット プロセス中にデータ変更が発生すると、データがコピーされてコピー データが生成され、子プロセスが変更されたコピー データを dump.rdb ファイルに書き込みます。
# appendonly no 关闭AOF持久化 appendonly yes # 开启AOF持久化 # The name of the append only file (default: "appendonly.aof") appendfilename "appendonly.aof" # 持久化文件名AOF には、コマンドをディスクに保存する 3 つの方法があります。デフォルトでは、AOF はコマンドの永続性のために
appendfsync Everysec を使用します。
appendfsync always #每次有新的改写命令时,都会追加到磁盘的aof文件中。数据安全性最高,但效率最慢。 appendfsync everysec # 每一秒,都会将改写命令追加到磁盘中的aof文件中。如果发生宕机,也只会丢失1秒的数据。 appendfsync no #不会主动进行命令落盘,而是由操作系统决定什么时候写入到磁盘。数据安全性不高。AOFを開いた後、redisサービスを再起動する必要があり、再度当該書き換えコマンドを実行するとaofファイルに運用コマンドが記録されます。
##RDB | AOF||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
低 | データセキュリティ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
高 | スペース使用量 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
高 |
混合模式由于RDB持久化方式容易造成数据丢失,AOF持久化方式数据恢复较慢,所以在redis4.0版本后,新出来混合持久化模式。混合持久化将RDB和AOF的优点进行了集成,并而且依赖于AOF,所以在使用混合持久化前,需要开启AOF。在开启混合持久化后,当发生AOF重写时,会将内存中的数据以RDB的数据格式保存到aof文件中,在下一次的重写之前,混合持久化会追加保存每条改写命令到aof文件中。当需要恢复数据时,会加载保存的rdb内容数据,然后再继续同步aof指令。 # AOF重写配置,当aof文件达到60MB并且比上次重写后的体量多100%时自动触发AOF重写 auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb aof-use-rdb-preamble yes # 开启混合持久化# aof-use-rdb-preamble no # 关闭混合持久化 AOF重写是指当aof文件越来越大时,redis会自动优化aof文件中无用的命令,从而减少文件体积。比如在处理文章阅读量时,每查看一次文章就会执行一次Incr命令,但是随着阅读量的不断增加,aof文件中的incr命令也会积累的越来越多。在AOF重写后,将会删除这些没用的Incr命令,将这些命令直接替换为set key value命令。除了redis自动重写AOF,如果需要,也可以通过 主从复制在生产环境中,一般不会直接配置单节点的redis服务,这样压力太大。为了缓解redis服务压力,可以搭建主从复制,做读写分离。redis主从复制,是有一个主节点Master和多个从节点Slave组成。主从节点间的数据同步只能是单向传输的,只能由Master节点传输到Slave节点。 环境配置准备三台linux服务器,其中一台作为redis的主节点,两台作为reids的从节点。如果没有足够的机器可以在同一台机器上面将redis文件多复制两份并更改端口号,这样可以搭建一个伪集群。
修改redis.conf文件中的replicaof,配置主节点的ip和端口号,并且开启从节点只读。
./src/redis-server redis.conf
./src/redis-server redis.conf 启动成功后可以看到日志中显示已经与Master节点建立的连接。
全部节点启动成功后,Master节点可以查看从节点的连接状态,offset偏移量等信息。 info replication # 主节点查看连接信息 数据同步流程
部分数据同步发生在Slave节点发生宕机,并且在短时间内进行了服务恢复。短时间内主从节点之间的数据差额不会太大,如果执行全量数据同步将会比较耗时。部分数据同步时,Slave会向Master节点建立socket长连接并发送带有一个offset偏移量的数据同步请求,这个offset可以理解数据同步的位置。Master节点在收到数据同步请求后,会根据offset结合buffer缓冲区内新的改写命令进行位置确定。如果确定了offset的位置,那么就会将这个位置往后的所有改写命令发送到Slave节点。如果没有确定offset的位置,那么会再次执行全量数据同步。比如,在Slave节点没有宕机之前命令已经同步到了offset=11这个位置,当该节点重启后,向Master节点发送该offset,Master根据offset在缓冲区中进行定位,在定位到11这个位置后,将该位置往后的所有命令发送给Slave。在数据同步完成后,后续Master节点的命令会不断的发送到该Slave节点 优缺点
Sentinel モードでは、マスター/スレーブがさらに最適化されます。アーキテクチャ内のサーバーの状態に関しては、ダウンタイムが発生すると、Sentinel が短期間で新しいマスター ノードを選択し、マスターとスレーブの切り替えを実行します。それだけでなく、マルチセンチネル ノードでは、各センチネルが相互に監視し、センチネル ノードがダウンしているかどうかを監視します。#環境構成
|
以上がRedis 高可用性アーキテクチャの構築から原理分析までの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Redisは、データをキャッシュし、分散ロックとデータの持続性を実装することにより、アプリケーションのパフォーマンスとスケーラビリティを向上させます。 1)キャッシュデータ:Redisを使用して頻繁にアクセスしたデータをキャッシュして、データアクセス速度を向上させます。 2)分散ロック:Redisを使用して分散ロックを実装して、分散環境での操作のセキュリティを確保します。 3)データの持続性:データの損失を防ぐために、RDBおよびAOFメカニズムを介してデータセキュリティを確保します。

Redisのデータモデルと構造には、5つの主要なタイプが含まれます。1。文字列:テキストまたはバイナリデータの保存に使用され、原子操作をサポートします。 2。リスト:キューとスタックに適した注文された要素コレクション。 3.セット:順序付けられていない一意の要素セット、セット操作をサポートします。 4。注文セット(sortedset):ランキングに適したスコアを持つ一意の要素セット。 5。ハッシュテーブル(ハッシュ):オブジェクトの保存に適したキー価値ペアのコレクション。

Redisのデータベースメソッドには、メモリ内データベースとキー価値ストレージが含まれます。 1)Redisはデータをメモリに保存し、速く読み取り、書き込みます。 2)キー価値のペアを使用してデータを保存し、キャッシュやNOSQLデータベースに適したリスト、コレクション、ハッシュテーブル、注文コレクションなどの複雑なデータ構造をサポートします。

Redisは、高速パフォーマンス、リッチデータ構造、高可用性とスケーラビリティ、持続性能力、幅広いエコシステムサポートを提供するため、強力なデータベースソリューションです。 1)非常に速いパフォーマンス:Redisのデータはメモリに保存され、非常に速い読み取り速度と書き込み速度が高く、高い並行性と低レイテンシアプリケーションに適しています。 2)豊富なデータ構造:さまざまなシナリオに適したリスト、コレクションなど、複数のデータ型をサポートします。 3)高可用性とスケーラビリティ:マスタースレーブの複製とクラスターモードをサポートして、高可用性と水平スケーラビリティを実現します。 4)持続性とデータセキュリティ:データの整合性と信頼性を確保するために、データの持続性がRDBとAOFを通じて達成されます。 5)幅広い生態系とコミュニティのサポート:巨大なエコシステムとアクティブなコミュニティにより、

Redisの主な機能には、速度、柔軟性、豊富なデータ構造のサポートが含まれます。 1)速度:Redisはメモリ内データベースであり、読み取り操作はほとんど瞬間的で、キャッシュとセッション管理に適しています。 2)柔軟性:複雑なデータ処理に適した文字列、リスト、コレクションなど、複数のデータ構造をサポートします。 3)データ構造のサポート:さまざまなビジネスニーズに適した文字列、リスト、コレクション、ハッシュテーブルなどを提供します。

Redisのコア関数は、高性能のメモリ内データストレージおよび処理システムです。 1)高速データアクセス:Redisはデータをメモリに保存し、マイクロ秒レベルの読み取り速度と書き込み速度を提供します。 2)豊富なデータ構造:文字列、リスト、コレクションなどをサポートし、さまざまなアプリケーションシナリオに適応します。 3)永続性:RDBとAOFを介してディスクにデータを持続します。 4)サブスクリプションを公開:メッセージキューまたはリアルタイム通信システムで使用できます。

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

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


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

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

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境
