CacheBuilderとLoadingCacheを使用して、データベース データのメモリ内キャッシュを実装しています。
クライアントがバッキング ストアに存在しないアイテムのキャッシュを照会するとします。指定されたキーのデータが見つからなかったことをクライアントに知らせたい。これを処理するための最良のアプローチは何ですか?
- 「データなし」を意味する特別な値をキャッシュに保存します。
- キャッシュに何も格納せず、例外を発生させます。
- 他のアイデア?
CacheBuilderとLoadingCacheを使用して、データベース データのメモリ内キャッシュを実装しています。
クライアントがバッキング ストアに存在しないアイテムのキャッシュを照会するとします。指定されたキーのデータが見つからなかったことをクライアントに知らせたい。これを処理するための最良のアプローチは何ですか?
私はいつもこれを次のように解決してきました。
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参照をすばやく削除することができます。