2016-04-27 3 views
1

私はキャッシュにカフェインを使用したいと思います。私は後書きが必要です。私はデータベースに書き込む時間を制限したい。 documentationライトバックキャッシュと記述されているので、可能であればそれを設定する方法の例はありません。私はCacheWriterを実装しましたが、たとえば、10秒に1回だけライターを呼び出すように設定する方法を理解していません(何かがキャッシュに変更された場合)。カフェインキャッシュでライトバックを設定するには?

答えて

1

CacheWriterは拡張ポイントであり、ドキュメントには意味をなさないユースケースが記載されています。これらのケースは図書館の範囲外であり、代わりに実装された場合は、あまりにも厳格すぎる可能性があります。

ライターは、通常の書き込み操作(ただし計算ではない)の間に原子的に呼び出されます。これにより、特定のキーに対して順番に変更が行われることが保証されます。ライトビハインドの場合、ライタは、非同期に処理されるキューにエントリを追加する。操作をバッチ処理する。それがしきい値サイズを超えた場合、前の周期ビハインド書き込みにバッチを実行するアップデートを合体

この機能を実装するとき、あなたが考慮したいと思うかもしれません、

  • (例えばLinkedHashMapに集める)
  • 操作がまだフラッシュされていない場合は、ライトビハインドバッファからロードします(これにより、一貫性のないビューが回避されます)。
  • 特徴リスナー、レート制限、外部リソース

のICSアップデート:

ヴィムDeblauweはRxJavaを使って素敵なexampleを提供します。

+0

ああ、それは完全にはっきりしていませんでした。おそらくタイトルのない最初のセクションはタイトル「使用法」を得ることができ、他の3つのタイトルは新しいタイトル「可能なユースケース」の下でグループ化することができる。たぶん、これらのことは、その 'CacheWriter'の上に実装することは可能ですが、カフェインでは利用できないことです。最終的に、彼らは箱から書いてあるので、私はHazelcastと一緒に行きました。 –

+1

ありがとう、私は次に文書を改善します。私は、この機能を提供するためのコミュニティ拡張がうまくいくと思います。私は、カフェインが、多くのフレームワーク作家の間違いを避けるために、ライブラリ(柔軟性があり、小さく、明白で、集中している)のように感じるようにしたいと思います。スコープ外の側面を処理するためのビルディングブロックとして使用するには、十分に拡張可能であることが望ましくありません。 –

関連する問題