decadence

個人のメモ帳

Refresh Cache in background

  • 処理に時間のかかるものをキャッシュ
  • キャッシュするためのkeyが不定だが、偏りがある
  • 初回取得時もすぐにデータを取りたい
    • warmup
    • (いきなりkeyが不定の条件から外れてるが、これは仕方ない...)
  • expireした時もすぐにデータを取りたい
    • 非同期で呼ばれるであろうkeyに対してキャッシュを予め更新しておく
  • メモリリークしたくない
    • 更新間でどんなkeyが来たのかを貯めておいて、それのみ更新の対象にする
    • 不要になったデータはGC対象に

with Spring

expireAfterWrite/refreshAfterWriteしても、次回読み込み時はload処理が走ってそのリクエストを返すのが遅くなるし、定期的に更新するかという気持ち

Springなら @Scheduled とか使う方が良いけど、それ以外なら適当にExecutor回す