0

イベントの頻度を検出する必要があります。たとえば、X 秒以内に N 個の同一のイベントが発生しました。

私の検出プロセスは 24 時間 365 日継続的に実行されます。

私の初期設計ではConcurrentHashMap、キーはイベント ID を表すカスタム値オブジェクトであり、値はJoda DateTimeイベントが発生したときの値です。

このアプローチは、イベント頻度の検出にはうまく機能しましたが、「古い」イベントを削除するためのエビクション プロセスも実装する必要がありました。

私が発見した改善されたアプローチをグーグルで検索するとcom.google.common.cache.Cache、関連するものとして有望に見えましたCacheBuilder.expireAfter#####()、キャッシュのすべての get メソッドは非推奨です。どうやら私は使用する必要がありますLoadingCache

メソッドのすべての例はLoadingCache load()、データベースまたはその他の「高価な」操作にアクセスして、ロードする値を取得することを示しています。これらのどれも私のユースケースに適合しません。キャッシュに入力する必要があるキーと値があります。値がバックエンド データストアに存在しない場合、キャッシュ ミスでイベントを「ロード」するにはどうすればよいですか?

私は使用することになっていますcache.put(Key, Value)か?

4

0 に答える 0