原因分析: Redis キャッシュの二重削除の遅延
推奨学習: Redis ビデオ チュートリアル
キャッシュが更新されずに削除されるのはなぜですか?
更新であり、分散トランザクションの問題がある場合、キャッシュが変更され、データベースの変更が失敗する可能性があります。キャッシュを削除するだけであれば、データベースの変更に失敗した場合でも、次のクエリでデータベースから直接データが取得されるため、ダーティなデータは表示されません。
遅延二重削除とは何ですか?
つまり、エンティティクラスを追加、削除、変更する場合には、エンティティクラスのキャッシュをクリアする必要があり、クリア位置はデータベース操作メソッドの前後になります。
矛盾による証明を採用する
最初のみ削除

後でのみ削除
結論
これにより、前方削除と後方削除の両方に問題があるという結論につながります。したがって、遅延二重削除戦略が採用されます。
考察 2: なぜ遅延するのか
それでも矛盾による証明です。次の図の状況は、二重削除後に古いキャッシュがまだ存在する状況を示しています。データベースの変更 -> キャッシュのクリアの前に、他のトランザクションのキャッシュ変更操作が完了していることを確認するため、遅延は です。
追加: キャッシュの一貫性を確保するために二重削除を遅らせる必要がある理由
理由キャッシュの一貫性を確保するために二重削除を遅らせます
- データベース データを変更する前に、最初に Redis を削除する必要があります。これは、データベース データの変更と Redis データの削除の間の間隔内に、がヒットした場合、このデータは Redis に存在しないことが保証されます。この削除を行わないと、データベースのデータが変更されたときに古いデータが依然として Redis から読み取られる可能性があり、データの不整合が発生します。
- 2 回目の削除は、データベースのデータが変更された後です。このとき、redis 内の対応するデータを再度削除する必要があります。今回は、1 回目の redis の削除とデータベースのデータの変更を削除します。はリクエストです。その後、古いデータは再び redis にキャッシュされますが、次にデータベース内のデータが変更されます。今回削除しないと、データベース内の古いデータが redis に存在します。
- では、データベースが 2 回目に変更された後、なぜ redis の削除を一定期間遅らせる必要があるのでしょうか?
- データベースの前回の読み取りを待つために、データがキャッシュに書き込まれるのを待って、最後にダーティ データを削除するため、データベースからデータが送信されるまでにかかる時間になります。データベースをサーバー キャッシュに書き込みます
ただし、遅延二重削除では、遅延時間を決定するのが非常に難しいため、遅延二重削除はお勧めできません
総合的に考慮すると、最初にデータベースが変更された場合でも、キャッシュを削除した後、一定期間古いデータが読み取られることになりますが、これは通常は許容されます。
キャッシュが時間内に削除される限り、他のスレッドは最新の値を読み取ることができます。
同時に、キャッシュが確実に削除されるようにするために、mq を使用してキャッシュが削除されることを確認できます。
メッセージが mq で繰り返し消費されない場合(キャッシュの削除)
推奨学習:Redis ビデオ チュートリアル
以上が原因分析: 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)

ホットトピック









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

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

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

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

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

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

Redis は、高性能のキー/値キャッシュです。 PHPRedis 拡張機能は、Redis サーバーと対話するための API を提供します。 Redis に接続し、データを保存および取得するには、次の手順を使用します。 接続: Redis クラスを使用してサーバーに接続します。ストレージ: set メソッドを使用してキーと値のペアを設定します。取得: get メソッドを使用してキーの値を取得します。

エラーの原因とソリューションPECLを使用してDocker環境に拡張機能をインストールする場合、Docker環境を使用するときに、いくつかの頭痛に遭遇します...
