0

同じデータをデータベース テーブルに格納するのではなく、Web サービスからのデータをバッファリングするために HttpCache を使用すると、どのような問題が発生する可能性がありますか? サービスが一時的に利用できなくなったという仮定の状況で、その間にサーバーを再起動する必要があった場合、キャッシュを再設定する方法はありません。そのため、SqlServer セッション状態でできるようにキャッシュを永続化することは可能ですか?

HttpCache は Singleton パターンを使用して実装されていると読みました。これは、キャッシュから取得したオブジェクトを操作するときに Mutex を使用する必要があるということですか?

キャッシュが別のスレッド化されたプロセスによって一方で更新され、別のスレッドによって読み取られている場合はどうなりますか?

ありがとう。

4

1 に答える 1

2

キャッシュ メカニズムで発生する最大の問題は、古いデータです。データはキャッシュされるため、キャッシュの有効期間と同じくらい古い可能性があります。トランザクション システムではこれは受け入れられませんが、他のシステムでは問題ありません。データの古さを理解するだけです。キャッシュを永続化できるかどうかはわかりませんが、そうするためにデータベースに行くことを考えている場合は、そもそもキャッシュを使用しないことをお勧めします。ポイントの一部は高速なインメモリ アクセスであるためです。あなたのデータに。

はい、キャッシングは、Singleton のような一元化されたインメモリ ストアを使用します。Mutexes に関するあなたの質問に対する答えは、データ アクセス パターンに依存するということです。ほとんどの人は、キャッシュを使用してデータを 1 回入力します。値がタイムアウトした場合、キャッシュはそれらのエントリを無効にし、再入力します。はい、Mutex (またはlockステートメントの可能性が高い) を使用してアクセスを保護し、複数のクライアントが競合してキャッシュに一度にデータを入力するのを防ぐことができます。しかし、IMO はデータ整合性ポイントというよりはパフォーマンス ポイントです。おそらく、クライアントは同じデータを使用して相互に書き込みを行うためです (状況によって異なります)。

于 2010-08-15T13:47:21.830 に答える