で作成された Guava キャッシュがありexpireAfterWrite(20, TimeUnit.MINUTES)
ます。キャッシュは、作成時に数十のエントリで初期化されます。値が期限切れになると、クライアントは外部サービスを呼び出してキャッシュを更新することになっています。
問題は、初期化されたすべての値が同時に 20 分後に期限切れになり、クライアントがほとんど同じインスタンスでサービスを何十回も呼び出すことです。
私はこれが起こることを望んでいません。これを回避するための 1 つの方法は、確率的にエントリを TTL より少し早く期限切れにして、サービスが同時に多くのヒットを受けないようにすることです。
残念ながら、Guava キャッシュでこれを行うオプションはありません。少なくとも Wiki や Javadoc からは何も表示されませんでした。他に利用可能なライブラリはありますか?この目的のために独自のキャッシュの実装を作成することは避けようとしています。