mysql と redis の二重書き込みの一貫性を確保する
1. シナリオ:
二重書き込みの整合性とは、データベース内のデータを更新するときに、redis 内のデータも同期的に更新する必要があることを意味します。 Redis を使用してデータを読み取るプロセス。ユーザーがデータにアクセスすると、まずデータがキャッシュから読み取られます。キャッシュがヒットした場合は、キャッシュ内のデータが直接ユーザーに返されます。データが存在しない場合は、キャッシュ内のデータがユーザーに返されます。キャッシュの場合、最初にデータベースがクエリされ、クエリされたデータがキャッシュに保存されてからユーザーに返されます。
2. 二重書き込みの一貫性を確保するための戦略
1. 最初にキャッシュを更新し、次にデータベースを更新します
2. 更新最初にデータベースを更新し、次にキャッシュを更新します
3. 最初にキャッシュを削除し、次にデータベースを更新します
4. 最初にデータベースを更新し、次にキャッシュを削除します
3. 4 つの戦略の長所と短所
1. 最初にキャッシュを更新し、次にデータベースを更新します
# 問題は明白です。キャッシュは正常に更新されたが、データベースの更新が失敗すると、キャッシュ内のダーティ データが発生します。
2. 最初にデータベースを更新し、次にキャッシュを更新します
同時実行性が高い場合は、次のようになります。状況が存在する可能性があります。スレッド A がデータベースを更新します。ネットワークまたはその他の理由により、スレッド A にキャッシュを更新する時間がなかった場合、プロセス B がデータベースを更新し、キャッシュを更新します。その後、プロセス A が更新されます。これにより、トランザクション損失の状況のように、スレッド B がキャッシュへの更新を失うことになります
3. まずキャッシュを削除してから、データベースを更新します
# # この戦略では戦略 2 のキャッシュ損失を回避できた可能性がありますが、同時実行性が高い状況では不整合も発生します。たとえば、スレッド A が書き込み操作を実行するとき、最初にキャッシュを削除してから、新しいデータベースとの通信の準備をします。このとき、スレッド B はキャッシュにヒットせずに書き込み操作を実行し、データベースにクエリを実行します。このとき、古い値が読み取られ、クエリされた古い値がキャッシュに保存されます。その後、スレッド A は、データベースの更新が完了した後、キャッシュを遅延して削除することは、遅延二重削除とも呼ばれます。ここでの遅延時間は、ビジネスの読み取り操作の時間より大きくなければなりません。4. まずデータベースを更新してからキャッシュを削除します
同時実行性がどれほど高くても、スレッド A がデータを読み取るときなど、不整合が発生します。キャッシュへの書き込みの準備中に、スレッド B がデータベースを更新し、その後キャッシュの削除操作を実行しました。このとき、スレッド A は古い値をキャッシュに書き込みましたが、これが起こる可能性は比較的低いですが、書き込みが行われているため、動作時間は読み取り動作の時間よりも長くなります。解決策: 二重削除の遅延。二重削除の遅延は依然として問題です。キャッシュの削除に失敗した場合はどうすればよいですか? もちろん、もう一度削除して、ループで削除を続けます。削除が失敗した後は、削除するキーをキューに入れ、削除が成功するまで繰り返し削除を試行できます。以上がmysql と redis の二重書き込みの一貫性を確保するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

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

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









次の手順でphpmyadminを開くことができます。1。ウェブサイトコントロールパネルにログインします。 2。phpmyadminアイコンを見つけてクリックします。 3。MySQL資格情報を入力します。 4.「ログイン」をクリックします。

Redisクラスターモードは、シャードを介してRedisインスタンスを複数のサーバーに展開し、スケーラビリティと可用性を向上させます。構造の手順は次のとおりです。異なるポートで奇妙なRedisインスタンスを作成します。 3つのセンチネルインスタンスを作成し、Redisインスタンスを監視し、フェールオーバーを監視します。 Sentinel構成ファイルを構成し、Redisインスタンス情報とフェールオーバー設定の監視を追加します。 Redisインスタンス構成ファイルを構成し、クラスターモードを有効にし、クラスター情報ファイルパスを指定します。各Redisインスタンスの情報を含むnodes.confファイルを作成します。クラスターを起動し、CREATEコマンドを実行してクラスターを作成し、レプリカの数を指定します。クラスターにログインしてクラスター情報コマンドを実行して、クラスターステータスを確認します。作る

Redisデータをクリアする方法:Flushallコマンドを使用して、すべての重要な値をクリアします。 FlushDBコマンドを使用して、現在選択されているデータベースのキー値をクリアします。 [選択]を使用してデータベースを切り替え、FlushDBを使用して複数のデータベースをクリアします。 DELコマンドを使用して、特定のキーを削除します。 Redis-CLIツールを使用してデータをクリアします。

MySQLはオープンソースのリレーショナルデータベース管理システムであり、主にデータを迅速かつ確実に保存および取得するために使用されます。その実用的な原則には、クライアントリクエスト、クエリ解像度、クエリの実行、返品結果が含まれます。使用法の例には、テーブルの作成、データの挿入とクエリ、および参加操作などの高度な機能が含まれます。一般的なエラーには、SQL構文、データ型、およびアクセス許可、および最適化の提案には、インデックスの使用、最適化されたクエリ、およびテーブルの分割が含まれます。

Redisのキューを読むには、キュー名を取得し、LPOPコマンドを使用して要素を読み、空のキューを処理する必要があります。特定の手順は次のとおりです。キュー名を取得します:「キュー:キュー」などの「キュー:」のプレフィックスで名前を付けます。 LPOPコマンドを使用します。キューのヘッドから要素を排出し、LPOP Queue:My-Queueなどの値を返します。空のキューの処理:キューが空の場合、LPOPはnilを返し、要素を読む前にキューが存在するかどうかを確認できます。

MySQLは、そのパフォーマンス、信頼性、使いやすさ、コミュニティサポートに選択されています。 1.MYSQLは、複数のデータ型と高度なクエリ操作をサポートし、効率的なデータストレージおよび検索機能を提供します。 2.クライアントサーバーアーキテクチャと複数のストレージエンジンを採用して、トランザクションとクエリの最適化をサポートします。 3.使いやすく、さまざまなオペレーティングシステムとプログラミング言語をサポートしています。 4.強力なコミュニティサポートを提供し、豊富なリソースとソリューションを提供します。

phpmyadminを使用してmysqlに接続する方法は? phpmyadminにアクセスするためのURLは、通常、http:// localhost/phpmyadminまたはhttp:// [サーバーIPアドレス]/phpMyAdminです。 MySQLユーザー名とパスワードを入力します。接続するデータベースを選択します。 [接続]ボタンをクリックして、接続を確立します。

Redisコマンドラインツール(Redis-Cli)を使用して、次の手順を使用してRedisを管理および操作します。サーバーに接続し、アドレスとポートを指定します。コマンド名とパラメーターを使用して、コマンドをサーバーに送信します。ヘルプコマンドを使用して、特定のコマンドのヘルプ情報を表示します。 QUITコマンドを使用して、コマンドラインツールを終了します。
