Redis でのマスター/スレーブ レプリケーション、Sentinel、クラスタリングについて説明します。
この記事では、Redis の関連知識を紹介し、Redis レベルをより高いレベルに引き上げるために、マスター/スレーブ レプリケーション、Sentinel、およびクラスタリングについて説明します。
1. マスター/スレーブ レプリケーション
1. はじめに
マスター/スレーブ レプリケーションは、Redis ディストリビューションと高可用性の基礎です。 Redis Assure の。 Redisでは、複製されるサーバーをマスターサーバー(Master)と呼び、マスターサーバーを複製するサーバーをスレーブサーバー(Slave)と呼びます。 [関連する推奨事項: Redis ビデオ チュートリアル ]
マスター/スレーブ レプリケーションの構成は非常にシンプルで、3 つの方法があります (IP マスターを含む)サーバーの IP アドレス/ポート - メイン サーバー Redis サービス ポート):
構成ファイル - redis.conf ファイル、slaveof ip port
コマンド- Redis クライアントは、slaveof ip port
スタートアップ パラメータを実行します——./redis-server --slaveof ip port
2 を入力します。Master-スレーブ レプリケーションの進化
Redis のマスター/スレーブ レプリケーション メカニズムは、当初は 6.x バージョンほど完璧ではありませんでしたが、バージョンごとに反復されました。通常、次の 3 つのバージョンの反復を経ています:
#Before 2.8
- ##2.8~4.0
- 4.0
- 同期 (sync): スレーブ サーバーのデータ ステータスをメイン サーバーの現在のデータ ステータスに更新することを指します。これは主に初期化またはその後の完全同期中に発生します。
- コマンド伝播: マスターサーバーのデータステータスが変更(書き込み/削除など)され、マスターとスレーブ間のデータステータスが不一致になると、マスターサービスが変更されます。コマンドはスレーブ サーバーに伝播され、マスター サーバーとスレーブ サーバー間のステータスが一貫した状態に戻ります。
- スレーブ サーバーは、クライアントから送信された smileof ip prot コマンドを受信し、スレーブ サーバーはip:port に基づいてマスター サーバーにそれを作成します。 ソケット接続
- ソケットがメイン サーバーに正常に接続された後、スレーブ サーバーは、レプリケーションの処理に特に使用されるファイル イベント ハンドラーを関連付けます。マスター サーバー
- によって送信された後続の RDB ファイルと伝播されたコマンドのコピーが開始され、スレーブ サーバーはマスター サーバー
## に同期コマンドを送信します。
#マスター サーバー sync コマンドを受信した後、bgsave コマンドを実行します。メイン サーバーのメイン プロセス フォークのサブプロセスは、RDB ファイルを生成し、RDB スナップショットが生成された後のすべての書き込み操作を記録します。 - bgsave コマンドの実行後、マスター サーバーは生成された RDB ファイルをスレーブ サーバーに送信します。RDB ファイルを受信した後、スレーブ サーバーはまず自身のバッファをすべてクリアします。データを取得してから、RDB ファイルをロードし、そのデータのステータスをマスター サーバーに更新します。RDB ファイルのデータのステータス
- マスター サーバーは、バッファ書き込みコマンドをスレーブ サーバーに送信し、スレーブサーバーはコマンドを受信して実行します。
- マスター/スレーブ レプリケーションの同期手順が完了しました
- 2.1.2 コマンドの伝播
同期作業が完了すると、マスター/スレーブ レプリケーション コマンドの伝播を通じてデータの状態の一貫性を維持する必要があります。下図に示すように、現在のマスターサーバーとスレーブサーバー間の同期作業が完了した後、マスターサービスはクライアントからの DEL K6 命令を受信した後、K6 を削除しますが、この時点ではスレーブサーバーには K6 がまだ存在しており、マスターとスレーブのデータ状態が不一致です。マスターサーバーとスレーブサーバーの一貫したステータスを維持するために、マスターサーバーは自身のデータステータスを変更するコマンドをスレーブサーバーに伝播して実行します。スレーブサーバーも同じコマンドを実行すると、マスターサーバー間のデータステータスはスレーブサーバーに伝播されます。マスターサーバーとスレーブサーバーは一貫性を保ちます。
2.1.3 欠陥
上記のことから、2.8 より前のバージョンのマスター/スレーブ レプリケーションに欠陥は見られませんが、これはネットワークの変動を考慮していないためです。分散を理解している兄弟なら CAP 理論を聞いたことがあるでしょう。CAP 理論は分散ストレージ システムの基礎です。CAP 理論では P (パーティション ネットワーク パーティション) が存在する必要があり、Redis のマスター/スレーブ レプリケーションも例外ではありません。マスターサーバーとスレーブサーバー間でネットワーク障害が発生し、スレーブサーバーとマスターサーバー間の通信が一定時間停止した場合 スレーブサーバーがマスターサーバーに再接続した際、マスターサーバーのデータステータスが低下した場合この間にマスタ/スレーブサーバ間でデータの状態に不整合が発生します。 Redis 2.8 より前のマスター/スレーブ レプリケーション バージョンでは、このデータ状態の不一致を解決する方法は、同期コマンドを再送信することです。同期によりマスター サーバーとスレーブ サーバーのデータ ステータスの一貫性が保証されますが、同期が非常にリソースを消費する操作であることは明らかです。
sync コマンドが実行されると、マスター サーバーとスレーブ サーバーに必要なリソース:
マスター サーバーは BGSAVE を実行して RDB ファイルを生成します。これは大きなサイズを占有します。 CPU、ディスク I/O、およびメモリ リソースの量。
マスター サーバーは生成された RDB ファイルをスレーブ サーバーに送信しますが、これにより多くのネットワーク帯域幅が占有されます。
##スレーブ サーバーが RDB ファイルを受信してロードすると、スレーブ サーバーがブロックされ、サービスを提供できなくなります。- 上記3点を満たした場合、syncコマンドによりマスターサーバーの応答能力が低下するだけでなく、スレーブサーバーが外部へのサービス提供を拒否されてしまいます。
2.2 バージョン 2.8-4.0
2.2.1 改善点2.8 より前のバージョンの場合、Redis は 2.8 データ ステータスの後にスレーブ サーバーに再接続します。同期が改善されました。改善の方向性は、完全再同期の発生を減らし、可能な限り部分再同期を使用することです。バージョン 2.8 以降では、同期操作を実行するために sync コマンドの代わりに psync コマンドが使用されます。psync コマンドには、完全同期機能と増分同期機能の両方があります。
- 以前のバージョンとの完全同期 ( sync) Consistent
- 増分同期では、切断および再接続後のレプリケーションの状況に応じて異なる措置が取られ、条件が許せば、サービスから欠落したデータの一部だけが残ります。送信されます。
- 2.2.2 psync の実装方法
サーバーからの切断と再接続後に増分同期を実現するために、Redis は 3 つの補助パラメータを追加します。
- レプリケーション オフセット
- レプリケーション バックログ
- サーバー実行 ID (実行 ID)
- #2.2.2.1 レプリケーション オフセット
##レプリケーション オフセットはマスター サーバーとスレーブ サーバーの両方で維持されます
#マスターサーバーはスレーブ サービスにデータを送信し、N バイトのデータを伝播します。マスター サービスのレプリケーション オフセットはスレーブ サーバーから N- だけ増加します。マスター サーバーによって送信されたデータを受信します。 、N バイトのデータを受信し、スレーブ サーバーのレプリケーション オフセットを N
通常の同期状況は次のとおりです。
マスター サーバーとスレーブ サーバー間のレプリケーション オフセットが等しいかどうかを比較することで、マスター サーバーとスレーブ サーバー間のデータの状態が一貫しているかどうかを知ることができます。
A/B が正常に伝播し、C がサーバーから切断されたと仮定すると、次の状況が発生します。コピーが存在することは明らかです。 offset その後、スレーブ サーバー C が切断され、再接続された後、マスター サーバーは、スレーブ サーバーから失われた 100 バイトのデータを送信するだけで済みます。
しかし、マスター サーバーは、スレーブ サーバーにどのデータが欠けているかをどのようにして知るのでしょうか?2.2.2.2 コピー バックログ バッファ
コピー バックログ バッファは、デフォルト サイズが 1MB の固定長キューです。マスター サーバーのデータ ステータスが変化すると、マスター サーバーはデータをスレーブ サーバーに同期し、コピーをレプリケーション バックログ バッファに保存します。#オフセットを一致させるために、コピー バックログ バッファーはデータの内容を保存するだけでなく、各バイトに対応するオフセットも記録します。
#スレーブ サーバーが切断され、再接続されると、スレーブ サーバーは psync コマンドを通じてそのレプリケーション オフセット (オフセット) をマスター サーバーに送信し、マスター サーバーはこのオフセットを使用できます。増分伝播または完全同期を実行します。
オフセット 1 のデータがまだコピー バックログ バッファーにある場合は、増分同期操作を実行します。
Redis のデフォルトのコピー バックログ バッファ サイズは 1MB ですが、カスタマイズする必要がある場合はどのように設定すればよいですか? 当然のことながら、できる限り増分同期を使用したいと考えていますが、バッファーがあまりにも多くのメモリ領域を占有することは望ましくありません。次に、Redis スレーブ サービスが切断された後の再接続時間 T と、Redis マスター サーバーが 1 秒あたりに受信する書き込みコマンドのメモリ サイズ M を見積もることにより、レプリケーション バックログ バッファーのサイズ S を設定できます。
S = 2 * M * T
ここでの 2 倍の拡張は、ある程度の余地を残すためであることに注意してください。ほとんどのブレークの増分同期を回線の再接続に使用できるようにします。
2.2.2.3 ID
これを見た後、切断と再接続の増分同期はすでに実現できており、次の実行も必要だと思いますか? IDドライ さて?実はこれまで考慮されていなかった、マスターサーバーがダウンした場合にスレーブサーバーが新たなマスターサーバーとして選出される場合もあり、この場合は稼働中のIDを比較することで区別することができます。
- #実行 ID (実行 ID) は、サーバーの起動時に自動的に生成される 40 個のランダムな 16 進文字列です。マスター サービスとスレーブ サーバーの両方が実行 ID を生成します
- スレーブ サーバーがマスター サーバーのデータを初めて同期するとき、マスター サーバーはその実行 ID をスレーブ サーバーに送信し、スレーブ サーバーはそれを RDB ファイルに保存します
- スレーブ サーバーが切断され、再接続されると、スレーブ サーバーは以前に保存したマスター サーバーの実行 ID をマスター サーバーに送信します。サーバーの実行 ID が一致する場合、マスター サーバーが変更されていないことが証明されます。増分同期を試すことができます
- サーバー実行 ID が一致しない場合は、完全同期が実行されます ##2.2.3 完全な psync
完全な psync プロセスは非常に複雑ですが、マスター/スレーブ レプリケーション バージョン 2.8 ~ 4.0 では非常に完璧でした。 psync コマンドによって送信されるパラメータは次のとおりです。
psyncスレーブ サーバーがマスター サーバーを複製していない場合 (マスター サーバーが複製されていない場合)初めてマスター/スレーブがレプリケートされたとき、マスター サーバーは変更される可能性がありますが、スレーブ サーバーは初めて完全に同期されるため)、スレーブ サーバーは次のメッセージを送信します:
psync ? -1
- サーバーから受信 SLAVEOF 127.0.0.1 6379 コマンドに移動
- #サーバーからコマンド開始側に OK を返します (これは非同期操作です。OK を返します)最初にアドレスとポート情報を保存します)
- スレーブ サーバーは IP アドレスとポート情報をマスター ホストとマスター ポートに保存します
- スレーブ サーバーは、マスター ホストとマスター ポートの接続に基づいてマスター サーバーへのソケットをアクティブに開始し、同時にスレーブ サービスは、ファイルのコピーに特に使用されるファイル イベント ハンドラーを後続の RDB 用のこのソケット接続に関連付けます。ファイルコピーやその他の作業
- マスターサーバー スレーブサーバーからソケット接続リクエストを受信した後、そのリクエストに対応するソケット接続を作成し、スレーブサーバーをクライアントとして見ます(マスター/スレーブ レプリケーションでは、マスター サーバーとスレーブ サーバーは実際には互いのクライアントです。エンドとサーバー)
- ソケット接続が確立され、スレーブ サーバーがアクティブに PING コマンドを送信します。指定されたタイムアウト期間内にメインサーバーが PONG を返した場合、ソケットは接続可能であることが証明され、それ以外の場合は切断して再接続します
- マスターサーバーがパスワードを設定している場合(masterauth) の場合、スレーブ サーバーは認証のために AUTH masterauth コマンドをマスター サーバーに送信します。スレーブ サーバーがパスワードを送信してもマスター サービスがパスワードを設定していない場合、マスター サーバーはパスワードが設定されていないエラーを送信することに注意してください。マスター サーバーがパスワードを要求しているのにスレーブ サーバーがパスワードを送信しない場合、マスター サーバーはパスワードが設定されていないことを示すエラーを送信します。サーバーは NOAUTH エラーを送信し、パスワードが一致しない場合、マスター サーバーは無効なパスワード エラーを送信します。
- スレーブ サーバーは、REPLCONF listen-port xxxx (xxxx はスレーブ サーバーのポートを表します) をマスター サーバーに送信します。コマンドを受信した後、マスター サーバーはデータを保存します。クライアントが INFO レプリケーションを使用してマスターとスレーブの情報を照会すると、データを返すことができます。
- スレーブ サーバーは、 psync コマンド。この手順については上記を参照してください。図 2 の psync の状況
- マスター サーバーとスレーブ サーバーは相互にクライアントであり、データの要求/応答を実行します
- マスター サーバー サーバーとスレーブ サーバーの間でハートビート パケット メカニズムが使用され、接続が切断されているかどうかが判断されます。スレーブ サーバーは、REPLCONF ACL オフセット (スレーブ サーバーのレプリケーション オフセット) というコマンドを 1 秒ごとにマスター サーバーに送信します。このメカニズムにより、マスターとスレーブ間のデータの正しい同期が保証されます。オフセットが等しくない場合、マスター サーバーはサーバーは増分/完全同期手段を使用して、マスターとスレーブの間で一貫したデータ状態を確保します (増分/完全の選択は、オフセット 1 のデータがまだレプリケーション バックログ バッファーにあるかどうかによって決まります)
2.3 バージョン 4.0
Redis バージョン 2.8 ~ 4.0 にはまだ改善の余地がありますが、メイン サーバーを切り替えたときに増分同期を実行できますか?したがって、Redis 4.0 バージョンはこの問題に対処するために最適化され、psync は psync2.0 にアップグレードされました。 pync2.0 はサーバーの実行 ID を放棄し、代わりに replid と replid2 を使用しました。Replid には現在のメイン サーバーの実行 ID が保存され、replid2 には以前のメイン サーバーの実行 ID が保存されます。
レプリケーション オフセット
レプリケーション バックログ
-
メイン サーバー実行 ID (replid)
最後に実行されているメイン サーバー ID (replid2)
メイン サーバーは replid と replid2 によって解決できます。切り替え時の増分同期の問題は次のとおりです。
replid が現在のメイン サーバーの実行 ID と等しい場合は、増分同期/完全同期の同期方法を決定します
- #レプリカが異なる場合「等しい」では、レプリカ 2 が等しいかどうか (以前のマスター サーバーのスレーブ サーバーに属しているかどうか) を判断します。等しい場合は、増分/完全同期を選択できます。等しくない場合は、完全同期のみを実行できます。
- スレーブ内の最新データを新しいマスターとして選択します
- 新しいレプリケーション命令を他のスレーブに送信して、他のスレーブ サーバーを新しいマスターのスレーブにします
- 古いマスターの監視を継続し、オンラインになった場合は、古いマスターを新しいマスターのスレーブとして設定します
この記事は、次のリソース リストに基づいています:
IP アドレス | ノードの役割 | #ポート||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Redis マスター/センチネル | 6379/26379 | ##192.168.211.105 | |||||||||||||||||||||
Redis スレーブ/センチネル | ##6379/26379 | 192.168.211.106 | |||||||||||||||||||||
Redis スレーブ/センチネル | 6379/26379 | 2. Sentinel の初期化とネットワーク接続Sentinel には特に魔法のような機能はありません。これはより単純な Redis サーバーです。Sentinel が起動すると、さまざまなコマンド テーブルと設定ファイルが読み込まれます。したがって、本質的に Sentinel は少ないコマンドといくつかの特別な機能を備えた Redis サービス。 Sentinel が起動したら、次の手順を実行する必要があります。
struct sentinelState { //当前纪元,故障转移使用 uint64_t current_epoch; // Sentinel监视的主服务器信息 // key -> 主服务器名称 // value -> 指向sentinelRedisInstance指针 dict *masters; // ... } sentinel;2.4 Sentinel が監視するマスター サーバーのリストを初期化する Sentinel が監視するマスター サーバーのリストは、sentinelState のマスター ディクショナリに保存されます。sentinelState が作成されると、マスター サーバーのリストが作成されます。 Sentinel によって監視されているものの初期化が開始されます。
daemonize yes port 26379 protected-mode no dir "/usr/local/soft/redis-6.2.4/sentinel-tmp" sentinel monitor redis-master 192.168.211.104 6379 2 sentinel down-after-milliseconds redis-master 30000 sentinel failover-timeout redis-master 180000 sentinel parallel-syncs redis-master 1sentinelRedisInstance インスタンスは Redis サーバーの情報を保存します (マスターサーバー、スレーブサーバー、Sentinel の情報はすべてこのインスタンスに保存されます)。 typedef struct sentinelRedisInstance { // 标识值,标识当前实例的类型和状态。如SRI_MASTER、SRI_SLVAE、SRI_SENTINEL int flags; // 实例名称 主服务器为用户配置实例名称、从服务器和Sentinel为ip:port char *name; // 服务器运行ID char *runid; //配置纪元,故障转移使用 uint64_t config_epoch; // 实例地址 sentinelAddr *addr; // 实例判断为主观下线的时长 sentinel down-after-milliseconds redis-master 30000 mstime_t down_after_period; // 实例判断为客观下线所需支持的投票数 sentinel monitor redis-master 192.168.211.104 6379 2 int quorum; // 执行故障转移操作时,可以同时对新的主服务器进行同步的从服务器数量 sentinel parallel-syncs redis-master 1 int parallel-syncs; // 刷新故障迁移状态的最大时限 sentinel failover-timeout redis-master 180000 mstime_t failover_timeout; // ... } sentinelRedisInstance;上記の 1 つのマスターと 2 つのスレーブの構成によれば、次のインスタンス構造が得られます。
当Sentinel和Slave之间创建网络连接之后,Sentinel成为了Slave的客户端,Sentinel也会每隔10秒钟通过INFO指令请求Slave获取服务器信息。 到这一步Sentinel获取到了Master和Slave的相关服务器数据。这其中比较重要的信息如下:
此时实例结构信息如下所示: 2.7 创建Sentinel之间的网络连接此时是不是还有疑问,Sentinel之间是怎么互相发现对方并且相互通信的,这个就和上面Sentinel与自己监视的主从之间订阅_sentinel_:hello频道有关了。 Sentinel会与自己监视的所有Master和Slave之间订阅_sentinel_:hello频道,并且Sentinel每隔2秒钟向_sentinel_:hello频道发送一条消息,消息内容如下:
其中s代码Sentinel,m代表Master;ip表示IP地址,port表示端口、runid表示运行id、epoch表示配置纪元。 多个Sentinel在配置文件中会配置相同的主服务器ip和端口信息,因此多个Sentinel均会订阅_sentinel_:hello频道,通过频道接收到的信息就可获取到其他Sentinel的ip和port,其中有如下两点需要注意:
Sentinel之间不会创建订阅连接,它们只会创建命令连接: 此时实例结构信息如下所示: 3、Sentinel工作Sentinel最主要的工作就是监视Redis服务器,当Master实例超出预设的时限后切换新的Master实例。这其中有很多细节工作,大致分为检测Master是否主观下线、检测Master是否客观下线、选举领头Sentinel、故障转移四个步骤。 3.1 检测Master是否主观下线Sentinel每隔1秒钟,向sentinelRedisInstance实例中的所有Master、Slave、Sentinel发送PING命令,通过其他服务器的回复来判断其是否仍然在线。 sentinel down-after-milliseconds redis-master 30000 在Sentinel的配置文件中,当Sentinel PING的实例在连续down-after-milliseconds配置的时间内返回无效命令,则当前Sentinel认为其主观下线。Sentinel的配置文件中配置的down-after-milliseconds将会对其sentinelRedisInstance实例中的所有Master、Slave、Sentinel都适应。
如果当前Sentinel检测到Master处于主观下线状态,那么它将会修改其sentinelRedisInstance的flags为SRI_S_DOWN 3.2 检测Master是否客观下线当前Sentinel认为其下线只能处于主观下线状态,要想判断当前Master是否客观下线,还需要询问其他Sentinel,并且所有认为Master主观下线或者客观下线的总和需要达到quorum配置的值,当前Sentinel才会将Master标志为客观下线。 当前Sentinel向sentinelRedisInstance实例中的其他Sentinel发送如下命令: SENTINEL is-master-down-by-addr <ip> <port> <current_epoch> <runid>
current_epoch和runid均用于Sentinel的选举,Master下线之后,需要选举一个领头Sentinel来选举一个新的Master,current_epoch和runid在其中发挥着重要作用,这个后续讲解。 接收到命令的Sentinel,会根据命令中的参数检查主服务器是否下线,检查完成后会返回如下三个参数:
3.3 选举领头Sentineldown_state返回1,证明接收is-master-down-by-addr命令的Sentinel认为该Master也主观下线了,如果down_state返回1的数量(包括本身)大于等于quorum(配置文件中配置的值),那么Master正式被当前Sentinel标记为客观下线。 此时,Sentinel会再次发送如下指令: SENTINEL is-master-down-by-addr <ip> <port> <current_epoch> <runid> 此时的runid将不再是0,而是Sentinel自己的运行id(runid)的值,表示当前Sentinel希望接收到is-master-down-by-addr命令的其他Sentinel将其设置为领头Sentinel。这个设置是先到先得的,Sentinel先接收到谁的设置请求,就将谁设置为领头Sentinel。 发送命令的Sentinel会根据其他Sentinel回复的结果来判断自己是否被该Sentinel设置为领头Sentinel,如果Sentinel被其他Sentinel设置为领头Sentinel的数量超过半数Sentinel(这个数量在sentinelRedisInstance的sentinel字典中可以获取),那么Sentinel会认为自己已经成为领头Sentinel,并开始后续故障转移工作(由于需要半数,且每个Sentinel只会设置一个领头Sentinel,那么只会出现一个领头Sentinel,如果没有一个达到领头Sentinel的要求,Sentinel将会重新选举直到领头Sentinel产生为止)。 3.4 故障转移故障转移将会交给领头sentinel全权负责,领头sentinel需要做如下事情:
这其中最难的一步是如果选择最佳的新Master,领头Sentinel会做如下清洗和排序工作:
新的Master产生后,领头sentinel会向已下线主服务器的其他从服务器(不包括新Master)发送SLAVEOF ip port命令,使其成为新master的slave。 到这里Sentinel的的工作流程就算是结束了,如果新master下线,则循环流程即可! 三、集群1、简介Redis集群是Redis提供的分布式数据库方案,集群通过分片(sharding)进行数据共享,Redis集群主要实现了以下目标:
Redis クラスターの学習に関して、まったくの経験がない場合は、まず次の 3 つの記事 (中国語シリーズ) を読むことをお勧めします: Redis クラスターチュートリアル
Redis クラスターの仕様
Redis3 マスター 3 スレーブ擬似クラスター展開
次の内容は、図の 3 つのマスターと 3 つのスレーブ構造に依存しています。以下: リソースリスト:
|
以上がRedis でのマスター/スレーブ レプリケーション、Sentinel、クラスタリングについて説明します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

redisisclassifiedsaNosqldatabasebasesakey-valuedataModelinsteaded ofthetraditionaldatabasemodel.itoffersspeedand andffficability、makingidealforreal-timeaplications andcaching、butmaynotbesbesutable fors cenariois requiring datientiantientioniity

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。オブジェクトまたは構造化されたデータの保存に適したハッシュテーブル。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

Dreamweaver Mac版
ビジュアル Web 開発ツール
