Refresh Cache in background
- 処理に時間のかかるものをキャッシュ
- キャッシュするためのkeyが不定だが、偏りがある
- 初回取得時もすぐにデータを取りたい
- warmup
- (いきなりkeyが不定の条件から外れてるが、これは仕方ない...)
- expireした時もすぐにデータを取りたい
- 非同期で呼ばれるであろうkeyに対してキャッシュを予め更新しておく
- メモリリークしたくない
- 更新間でどんなkeyが来たのかを貯めておいて、それのみ更新の対象にする
- 不要になったデータはGC対象に
expireAfterWrite/refreshAfterWriteしても、次回読み込み時はload処理が走ってそのリクエストを返すのが遅くなるし、定期的に更新するかという気持ち
Springなら @Scheduled とか使う方が良いけど、それ以外なら適当にExecutor回す