Java 8 部構成の Redis

Redis 章-01-redis オープニング_bilibili_bilibili

ウォームアップ: Redis タイプの使用シナリオ

8 つのデータ型と Redis のアプリケーション シナリオの紹介_redis のデータ型のアプリケーション シナリオ-CSDN ブログ

私が知っていること: ストリーム タイプはメッセージ キューに使用されます (ダークホース コメント)

                BitMap はブルーム フィルターを実行できます (キャッシュの侵入に使用されます)。

Redis の高度な機能 (1) - ビットマップとブルーム フィルター_ビットマップとブルーム フィルター - CSDN ブログ

                HashMap は Redisson ロックの再入可能カウントを実行します (分散ロック)

                文字列の増分は、注文番号を生成するために使用されます (一意性を確保し、受信キーに基づいて統計を作成するため)

1. キャッシュの侵入

 2. キャッシュの内訳

 論理有効期限内のミューテックス ロックは、1 つのスレッドのみがキャッシュの再構築に進むようにするためのものです。

3. キャッシュなだれ

4. 二重書き込みの一貫性

4.1 一貫性が必要 (遅延二重削除/ミューテックス ロック)

遅延二重削除では強い一貫性を保証できません

 それでは、最初の 2 つの手順は、データベースの削除と更新のどちらを先に行うべきでしょうか? 全員が問題を抱えている

二重削除は、古いキャッシュが再度削除されるようにすることです (上記の 2 つの状況では古いキャッシュ)。

遅延はデータベースのマスターとスレーブの同期を確実にするためです。事前に削除すると、まだ同期されていないデータベースのスレーブ ノードにクエリが送信され、古いデータが見つかり、古いデータが復元されます。キャッシュに書き込まれてしまいますが、これは無駄に削除したことと同じです。

削除後の処理では、DB マスターとスレーブの同期中のクエリの有効性は保証できませんが、削除後に新しいデータが確実にクエリされるようになります。

遅延二重削除では強い一貫性を保証できません

ミューテックス ロックは強い一貫性を確保できますが、非効率です ---> 読み取り/書き込みロックを使用してください

4.2 高可用性と結果整合性が必要 (非同期通知)

5.redis永続RDB + AOF

aof は書き込みコマンドのみを記録し、読み取りコマンドは記録しません。

bgwrite は連続した変更をブロックし、同じレコードの最後の変更のみを記録します。

aof は周波数を自動的に記録します 

 

6.redis キーの有効期限戦略 (期限切れの削除)

7.Redisキー削除戦略(メモリがいっぱいになったら削除)

8. 分散ロック

  Redis 第 10 章 - redis 分散ロックの実装原理 (setnx、redisson)_bilibili_bilibili

リディソン・リエントリー、リトライ・ウォッチドッグ

9. 分散ロックのマスター/スレーブの一貫性 --> レッドロック RedLock

マスター ノードがロックされてダウンします。スレーブ ノードがマスター ノードになりますが、ロックを更新する時間がありません。その後、他のスレッドがロックを取得できるようになります。

ただし、赤いロックは一般に使用されず、パフォーマンスが低く、複雑です。

Redis は通常、高可用性と結果整合性を保証しており、サーバーのダウンタイムの可能性が低いため、レッド ロックはあまり使用されません。

強い一貫性を確保したい場合は、zookeeper を使用します。

10.redis クラスター ソリューション (マスター/スレーブ、センチネル、シャーディング)

10.1 マスター/スレーブ モード (高同時実行性)

 Redis マスターとスレーブを同期する方法 (完全同期、増分同期)

10.2 センチネル モード (高可用性)

10.2.1脑裂

マスター ノードとスレーブ ノードは接続されていませんが、引き続きクライアント データを受信します。ただし、Sentinel が新しいマスター ノードを選択し、古いマスター ノードがスレーブ ノードに縮小され、マスターとスレーブによって複製される場合、この期間中の操作は失われます。

これは、マスターノードとスレーブノード間の接続に問題があることを意味するため、書き込まないでください

10.2.2 単一 Redis の読み取り (100,000) 書き込み (80,000) の同時実行機能

 

10.3 シャードクラスター

11.Redis はなぜ速いのですか?

11.1 I/O多重化

11.2 I/O のブロック

11.3 ノンブロッキング I/O 

 11.4 多重化された I/O

多重化された IO は、選択を使用してソケット セットをポーリングおよび監視します。ソケットは、コピーする必要があるデータを表すことができます。最初の段階では、準備ができている人が最初に来ます。並列、先着順とみなすことができます。第 2 ステージ このステージのループは、recvfrom を呼び出して各ソケットを処理します。

ブロッキングIO、ノンブロッキングIOでは、それぞれのデータに順番(シリアル)があり、他のデータが用意できても、現在データが無い限り、そのデータを待ちます。効率が低くなります。

 11.5Redisネットワークモデル

Redis の速度は主にネットワーク IO の影響を受けるため、影響を受けやすい部分にはマルチスレッドのアップグレードが追加されますが、最終的なコマンドの実行は依然としてシリアルです。

おすすめ

転載: blog.csdn.net/m0_50973548/article/details/135168735