0

NCache を使用する既存のシステムに取り組んでいます。大規模なキャッシング要件を持つ分散システムであるため、キャッシングが正解であることに疑いの余地はありませんが...

何らかの理由で、既存のコードでは、キャッシュに格納する前にすべてのキャッシュ キーがハッシュされます。

私の主張は、キーをハッシュするべきではないということです。キャッシング ライブラリには、辞書を保存するための非常に最適化された方法があり、すべてをハッシュすると、これを行うとルックアップが実際に遅くなる可能性があるためです。

最初にコードを書いた人は去り、キーがキャッシュされる理由についての知識は失われました。

ハッシュ化が正しいことなのか、それとも削除すべきなのか、誰でも提案できますか。

4

2 に答える 2

1

キーをハッシュする必要があるかどうかは、システム要件によって異なります。

NCache はオブジェクトをそのキーで識別し、キーが等しいオブジェクトは等しいと見なします。以下は、ウィキペディアのハッシュ関数の定義です。

ハッシュ関数は、任意のサイズのデータ​​を固定サイズのデータ​​にマップするために使用できる任意の関数です。

ハッシュ キーを停止すると、キャッシュの動作が異なる場合があります。たとえば、NCache が等しいと見なしていた一部のオブジェクトが、現在 NCache が等しくないと見なす場合があります。また、キャッシュ エントリが 1 つではなく、2 つ取得されます。

NCache では、キーをハッシュする必要はありません。NCache キーは、オブジェクトごとに一意の単なる文字列です。関連するNCache 4.6 Programmer's Guideからの抜粋:

NCache は、オブジェクトの「キー」と「値」の構造を使用します。すべてのオブジェクトには、一意の文字列キーが関連付けられている必要があります。すべてのキーは、ローカルまたはクラスター化されているかどうかにかかわらず、キャッシュ内にアトミック オカレンスを持ちます。キャッシュされたキーは、本質的に大文字と小文字が区別されます。同じ値を持つ別のキーを追加しようとすると、キャッシュによって OperationFailedException がスローされます。

于 2017-01-10T13:30:54.803 に答える