環境
ehcache 内に java.util.List を保存しています。
Key(String) --> List<UserDetail>
順序付きリストには、最もアクティブなユーザーのトップ 10 ランキングが含まれています。
問題
同時のサードパーティ クライアントがこのリストを要求している可能性があります。ランキングに関しては、できるだけ最新である必要があります。したがって、ユーザーのアクティビティによってランキングが変更された場合、キャッシュ内の順序付けされたリストを長期間にわたって失効させてはなりません。新しいリストを再計算したら、キャッシュ内のリストをすぐに置き換えたいと思います。
複数の同時クライアントがランキングを要求している忙しいシナリオを考えてみましょう。次のような方法でキャッシュ項目を置き換えるにはどうすればよいですか? クライアントは、おそらく古いスナップショットをプルし続けることができます。null 値を取得することはありません。
キャッシュに書き込むサーバー スレッドは 1 つだけです。