国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

ホームページ データベース Redis Redis キャッシュの一貫性、キャッシュの侵入、キャッシュの破壊、キャッシュなだれの問(wèn)題を一緒に分析しましょう

Redis キャッシュの一貫性、キャッシュの侵入、キャッシュの破壊、キャッシュなだれの問(wèn)題を一緒に分析しましょう

May 19, 2022 am 10:12 AM
redis

この記事では、Redis に関する関連知識(shí)を提供し、主にキャッシュの整合性、キャッシュの侵入、キャッシュの破壊、キャッシュなだれ、キャッシュされたデータの書(shū)き込み同期に関連する問(wèn)題を紹介します。 DB の整合性の確認(rèn)。皆様のお役に立てれば幸いです。

Redis キャッシュの一貫性、キャッシュの侵入、キャッシュの破壊、キャッシュなだれの問(wèn)題を一緒に分析しましょう

関連する推奨事項(xiàng): 「Redis におけるホット キー ストレージの問(wèn)題の分析と、例外をキャッシュするための解決策について語(yǔ)る

(1) キャッシュ無(wú)効化の一貫性の問(wèn)題

キャッシュの一般的な使用方法は、まずキャッシュを読み取り、キャッシュが存在しない場(chǎng)合は DB から読み取ります。結(jié)果はキャッシュに書(shū)き込まれ、次回データを読み取るときに、データをキャッシュから直接取得できます。 [関連する推奨事項(xiàng): Redis ビデオ チュートリアル ]

データ変更では、キャッシュされたデータを直接無(wú)効にしてから、DB の変更は成功してもキャッシュされたデータが無(wú)効になることを避けるために DB コンテンツを変更します。ネットワークまたはその他の問(wèn)題によりクリアされず、データがダーティになります。ただし、これでもダーティ データの生成を避けることはできません。同時(shí)シナリオの場(chǎng)合: ビジネスでデータ Key:Hello Value:World に対する読み取りおよび変更リクエストが多數(shù)あると仮定します。スレッド A は OCS から Key:Hello を読み取り、Not Found 結(jié)果を取得し、DB からデータの要求を開(kāi)始し、データ Key:Hello Value:World を取得します。次に、このデータを OCS に書(shū)き込む準(zhǔn)備をしますが、OCS に書(shū)き込む前に (ネットワークCPU の待機(jī)により、スレッド A の処理速度が低下する可能性があります。) 別のスレッド B がデータ Key:Hello Value:OCS の変更を要求し、最初に無(wú)効化キャッシュ アクションを?qū)g行します (スレッド B はこのデータが存在するかどうかを知らないため) 、そのため、無(wú)効化操作が直接実行されます) OCS は無(wú)効なリクエストを正常に処理しました。スレッド A に戻って OCS の書(shū)き込みを続行し、Key:Hello Value:World をキャッシュに書(shū)き込みます。スレッド A のタスクは終了し、スレッド B も DB データ コンテンツを Key:Hello Value:OCS に正常に変更しました。この問(wèn)題を解決するために、OCS は Memcached プロトコルを拡張し (パブリック クラウドが間もなくサポートする予定です)、deleteAndIncVersion インターフェイスを追加しました。このインターフェイスは実際にはデータを削除しませんが、データに有効期限が切れたことを示すラベルを付け、データのバージョン番號(hào)を増やします。データが存在しない場(chǎng)合は、NULL が書(shū)き込まれ、ランダムなデータ バージョン番號(hào)も生成されます。 OCS の書(shū)き込みでは、バージョン番號(hào)のアトミックな比較がサポートされています。受信したバージョン番號(hào)が OCS によって保存されたデータのバージョン番號(hào)と一致しているか、元のデータが存在しないと仮定すると、書(shū)き込みが許可されます。そうでない場(chǎng)合は変更が拒否されます。

先ほどのシーンに戻ります: スレッド A は OCS から Key:Hello を読み取り、Not Found 結(jié)果を取得し、DB からデータの要求を開(kāi)始し、データ Key:Hello Value:World を取得して、書(shū)き込みの準(zhǔn)備をします。 OCS このデータ部分のバージョン番號(hào)情報(bào)のデフォルトは 1 です。A が OCS に書(shū)き込む前に、別のスレッド B がデータ Key:Hello Value:OCS を変更するアクションを開(kāi)始します。最初にキャッシュの削除アクションが実行されます。OCS は、キャッシュの削除アクションを正常に処理します。 deleteAndIncVersion リクエストを?qū)g行し、ランダムなバージョン No. 12345 (1000 より大きいことが合意) を生成します。スレッド A に戻り、Key:Hello Value:World の書(shū)き込みを要求して OCS への書(shū)き込みを続けます。この時(shí)點(diǎn)で、キャッシュ システムは、受信したバージョン番號(hào)情報(bào)が一致しない (1! = 12345) ことを検出し、書(shū)き込みは失敗し、スレッド A のタスクが終了します。;スレッド B も DB データ コンテンツを Key:Hello Value:OCS に正常に変更しました。

現(xiàn)時(shí)點(diǎn)では、OCS のデータは Key:Hello Value:NULL バージョン:12345、DB のデータは Key:Hello Value:OCS です。後続の読み取りタスクでは、DB のデータが再試行されます。 OCS に書(shū)き込みます。

(2) キャッシュされたデータの書(shū)き込み同期と DB との整合性の問(wèn)題

Web サイトの規(guī)模が拡大し、信頼性が向上するにつれて、複數(shù)の IDC の導(dǎo)入が課題となります。各 IDC は獨(dú)立した DB およびキャッシュ システムを備えており、キャッシュの一貫性が顕著な問(wèn)題となっています。

まず第一に、高効率を確保するために、キャッシュ システムは BINLOG を書(shū)き込んでいる場(chǎng)合でもディスク IO を防止します。もちろん、パフォーマンス上の理由から、キャッシュ システムは同期削除のみが可能であり、削除はできません。書(shū)き込みは同期的に行われるため、通常はキャッシュ同期が DB 同期の到著よりも優(yōu)先されます (結(jié)局のところ、キャッシュ システムの方がはるかに効率的です)。その場(chǎng)合、キャッシュにデータがなく、DB に古いデータが存在するシナリオが発生します。このとき、業(yè)務(wù)からデータの要求があり、リードキャッシュが見(jiàn)つかりません。DBから読み出してキャッシュにロードした古いデータは古いデータのままです。DBのデータ同期が來(lái)ると、DBのみが更新されます。また、キャッシュされたダーティ データはクリアできません。

Redis キャッシュの一貫性、キャッシュの侵入、キャッシュの破壊、キャッシュなだれの問(wèn)題を一緒に分析しましょう

上記の狀況からわかるように、不整合の根本原因は、異種システムが連攜して同期できないことです。DB データが最初に同期され、キャッシュされたデータが保証されるわけではありません。後で同期されます。したがって、キャッシュ システムが DB 同期をどのように待機(jī)するか、あるいは 2 つのキャッシュ システムが同期メカニズムを共有できるかを検討する必要があります。キャッシュ同期も DB BINLOG に依存しており、これは実現(xiàn)可能なソリューションです。

IDC1 の DB は、BINLOG を通じて IDC2 の DB に同期されます。この場(chǎng)合、IDC2-DB データ変更により獨(dú)自の BINLOG も生成されます。キャッシュされたデータの同期は、IDC2-DB BINLOG を通じて実行できます。キャッシュ同期モジュールは、BINLOG を分析した後、対応するキャッシュ キーを無(wú)効にし、同期をパラレルからシリアルに変更して順序を保証します。

(3) キャッシュの侵入 (DB に不要なクエリトラフィックが発生)

方法 1: ブルーム フィルターです。これは、要素がセット內(nèi)にあるかどうかを判斷するために使用される、非常にスペース効率の高い確率的アルゴリズムとデータ構(gòu)造です (ハッシュセットと同様)。そのコアは、長(zhǎng)いバイナリ ベクトルと一連のハッシュ関數(shù)です。 Google の guava を使用してブルーム フィルターを?qū)g裝します。 1) 誤計(jì)算率があり、格納する要素?cái)?shù)が増えると誤算率も増加する 2) 通常、ブルームフィルタから要素を削除することはできない 3) 配列の長(zhǎng)さと配列數(shù)を決定するプロセスハッシュ関數(shù)は複雑であり、配布 ロングフィルターの使用シナリオは何ですか? 1) スパム アドレス フィルタリング (アドレスの數(shù)は膨大です) 2) クローラー URL アドレスの重複排除 3) キャッシュの故障の問(wèn)題を解決します

方法 2: 空の結(jié)果を保存し、空の結(jié)果の時(shí)間を設(shè)定します

(4) キャッシュなだれ (キャッシュが同じ有効期限に設(shè)定されているため、DB フラッドが発生します)

方法 1: ほとんどのシステム設(shè)計(jì)者は、単一スレッドを確実にキャッシュするためにロックまたはキューの使用を検討しています。 (プロセス) 失敗時(shí)に基盤(pán)となるストレージ システムに大量の同時(shí)リクエストが発生するのを避けるために書(shū)き込みを行う

方法 2: 失敗時(shí)間のランダムな値

(5) キャッシュの內(nèi)訳 (ホット スポット) キー、多數(shù)の同時(shí)読み取りリクエストによって引き起こされる小さな雪崩)

キャッシュが特定の時(shí)點(diǎn)で期限切れになると、たまたま多數(shù)の同時(shí)読み取りリクエストが発生します。この時(shí)點(diǎn)でのこのキーに対するリクエスト これらのリクエスト キャッシュの有効期限が切れていることが判明した場(chǎng)合、通常、データはバックエンド DB からロードされ、キャッシュにリセットされます。このとき、大量の同時(shí)リクエストにより、瞬時(shí)にシステムが圧倒される可能性があります。バックエンド DB

方法 1: 1. 分散キャッシュを使用する サポートされているミューテックス キーに対してミューテックス キーを設(shè)定し、操作が正常に戻ると、ロード DB 操作が実行され、キャッシュが設(shè)定されます。つまり、DB のロードは 1 つのスレッドによってのみ処理されます。

方法 2: 事前にミューテックス キーを使用する: value 內(nèi)にタイムアウト値 (timeout1) を設(shè)定し、timeout1 が実際の memcache タイムアウト (timeout2) よりも小さいように設(shè)定します。 、ただちにタイムアウト 1 を延長(zhǎng)し、キャッシュにリセットします。次に、データベースからデータをロードしてキャッシュに設(shè)定します。これにより、ビジネス コードの侵入が増加し、コーディングの複雑さが増加します。

方法 3 : 「期限切れにならない」 ": Redis の観點(diǎn)から見(jiàn)ると、実際には有効期限が設(shè)定されていないため、ホットスポット キーの有効期限の問(wèn)題は発生しません。つまり、「物理的」キーの有効期限が切れることはありません。機(jī)能的な観點(diǎn)から見(jiàn)ると、有効期限が切れていない場(chǎng)合は、 , 靜的ではないので、キーに対応する値に有効期限を保存します。有効期限が近づいていることが判明した場(chǎng)合、キャッシュはバックグラウンドの非同期スレッドを通じて構(gòu)築されます。これは「論理的」です。有効期限

(6) キャッシュ システムにおける一般的なキャッシュ フルとデータ損失の問(wèn)題

##特定のビジネス分析に基づく必要があります。通常、オーバーフローを処理するために LRU 戦略を使用します。 、特定の狀況を確実にするための Redis の RDB および AOF 永続化戦略。

プログラミング関連の知識(shí)の詳細(xì)については、

プログラミング ビデオ !! を參照してください。

以上がRedis キャッシュの一貫性、キャッシュの侵入、キャッシュの破壊、キャッシュなだれの問(wèn)題を一緒に分析しましょうの詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國(guó)語(yǔ) Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見(jiàn)つけた場(chǎng)合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫(huà)像を無(wú)料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫(xiě)真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫(xiě)真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無(wú)料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡(jiǎn)単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無(wú)料のコードエディター

SublimeText3 中國(guó)語(yǔ)版

SublimeText3 中國(guó)語(yǔ)版

中國(guó)語(yǔ)版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開(kāi)発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開(kāi)発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

laravel8最適化ポイント laravel8最適化ポイント Apr 18, 2025 pm 12:24 PM

Laravel 8は、パフォーマンスの最適化のための次のオプションを提供します。キャッシュ構(gòu)成:Redisを使用してドライバー、キャッシュファサード、キャッシュビュー、ページスニペットをキャッシュします。データベースの最適化:インデックスを確立し、クエリスコープを使用し、雄弁な関係を使用します。 JavaScriptおよびCSS最適化:バージョン制御を使用し、アセットをマージおよび縮小し、CDNを使用します。コードの最適化:Composer Installation Packageを使用し、Laravelヘルパー機(jī)能を使用し、PSR標(biāo)準(zhǔn)に従ってください。監(jiān)視と分析:Laravel Scoutを使用し、望遠(yuǎn)鏡を使用し、アプリケーションメトリックを監(jiān)視します。

Redisキャッシュソリューションを使用して、製品ランキングリストの要件を効率的に実現(xiàn)する方法は? Redisキャッシュソリューションを使用して、製品ランキングリストの要件を効率的に実現(xiàn)する方法は? Apr 19, 2025 pm 11:36 PM

Redisキャッシュソリューションは、製品ランキングリストの要件をどのように実現(xiàn)しますか?開(kāi)発プロセス中に、多くの場(chǎng)合、ランキングの要件に対処する必要があります。

RedisキャッシュがSpring Bootで失敗した場(chǎng)合はどうすればよいですか? RedisキャッシュがSpring Bootで失敗した場(chǎng)合はどうすればよいですか? Apr 19, 2025 pm 08:03 PM

スプリングブートでは、Redisを使用してOAuth2Authorizationオブジェクトをキャッシュします。 Springbootアプリケーションでは、Springsecurityouth2authorizationserverを使用してください...

Laravelの最高の拡張パックを推奨:2024 Essential Tools Laravelの最高の拡張パックを推奨:2024 Essential Tools Apr 30, 2025 pm 02:18 PM

2024年の必須のLaravel拡張パッケージには、次のものが含まれます。 2。LaravelteLescope、詳細(xì)なアプリケーション監(jiān)視を提供します。 3。RARAVELHORIZON、Redisキュータスクの管理。これらの拡張パックは、開(kāi)発効率とアプリケーションのパフォーマンスを向上させることができます。

Laravel Environmentの構(gòu)築と基本構(gòu)成(Windows/Mac/Linux) Laravel Environmentの構(gòu)築と基本構(gòu)成(Windows/Mac/Linux) Apr 30, 2025 pm 02:27 PM

さまざまなオペレーティングシステムでLaravel環(huán)境を構(gòu)築する手順は次のとおりです。1。Windows:XAMPPを使用してPHPと作曲家をインストールし、環(huán)境変數(shù)を構(gòu)成し、Laravelをインストールします。 2.MAC:HomeBrewを使用してPHPとComposerをインストールし、Laravelをインストールします。 3.Linux:Ubuntuを使用してシステムを更新し、PHPとComposerをインストールし、Laravelをインストールします。各システムの特定のコマンドとパスは異なりますが、コアステップは、Laravel開(kāi)発環(huán)境のスムーズな構(gòu)築を確保するために一貫しています。

Redisの役割:データストレージと管理機(jī)能の調(diào)査 Redisの役割:データストレージと管理機(jī)能の調(diào)査 Apr 22, 2025 am 12:10 AM

Redisは、データストレージと管理において重要な役割を果たしており、複數(shù)のデータ構(gòu)造と持続性メカニズムを通じて最新のアプリケーションの中核となっています。 1)Redisは、文字列、リスト、コレクション、注文されたコレクション、ハッシュテーブルなどのデータ構(gòu)造をサポートし、キャッシュや複雑なビジネスロジックに適しています。 2)RDBとAOFの2つの持続方法を通じて、Redisは信頼できるストレージとデータの迅速な回復(fù)を保証します。

スロークエリログを設(shè)定する方法Centos Redis スロークエリログを設(shè)定する方法Centos Redis Apr 14, 2025 pm 04:54 PM

CENTOSシステムのRedisスロークエリログを有効にして、パフォーマンスの診斷効率を改善します。次の手順では、構(gòu)成をガイドします。ステップ1:最初にRedis構(gòu)成ファイルを見(jiàn)つけて編集し、通常は/etc/redis/redis.confにあるRedis構(gòu)成ファイルを見(jiàn)つけます。次のコマンドで構(gòu)成ファイルを開(kāi)きます:sudovi/etc/redis/redis.confステップ2:構(gòu)成ファイルでスロークエリログパラメーターを調(diào)整し、次のパラメーターを見(jiàn)つけて変更します:#slow query-log-log-slower-slower-than10000#スロークエリのエントリの最大數(shù)

マルチノード環(huán)境では、Spring Bootの@Scheduledタイミングタスクが1つのノードでのみ実行されることを確認(rèn)する方法は? マルチノード環(huán)境では、Spring Bootの@Scheduledタイミングタスクが1つのノードでのみ実行されることを確認(rèn)する方法は? Apr 19, 2025 pm 10:57 PM

マルチノード環(huán)境でのスプリングブートタイミングタスクの最適化ソリューションは、春の開(kāi)発です...

See all articles