6

CacheBuilderLoadingCacheを使用して、データベース データのメモリ内キャッシュを実装しています。

クライアントがバッキング ストアに存在しないアイテムのキャッシュを照会するとします。指定されたキーのデータが見つからなかったことをクライアントに知らせたい。これを処理するための最良のアプローチは何ですか?

  • 「データなし」を意味する特別な値をキャッシュに保存します。
  • キャッシュに何も格納せず、例外を発生させます。
  • 他のアイデア?
4

1 に答える 1

9

私はいつもこれを次のように解決してきました。

interface KeyValueService<K,V> {
    V get(K key);
}

class CachingKeyValueService<K,V> {
    Cache<K,Optional<V>> cache;
    V get(K key) {
        return cache.get(key).orNull();
    }

}

理想的には、KeyValueServiceのインターフェースを変更して、常にオプションを返すようにしますが、それが不可能な場合もあります。

重み付けを使用して、すべてのOptional.ABSENT参照をすばやく削除することができます。

于 2012-06-14T07:44:31.680 に答える