ドキュメントを読んでもよくわからんかったけど、ここの説明をみてようやく理解できた。
timeToLive is a total time an entry stays in a cache region. timeToIdle specifies how long it should stay in cache if it is not referenced.
https://forums.hibernate.org/viewtopic.php?f=1&t=983635&view=previous
こんな感じ。
- timeToIdleSeconds
- 意味的には参照間生存期間、みたいな感じかな。この時間のあいだ参照されなかったらキャッシュから削除される。ということはこの時間内で参照され続ければ、削除はされない。
- timeToLiveSeconds
- こっちは最大生存期間、みたいな感じか。この時間が経過すると必ずキャッシュから削除される。参照されてようがなかろうが問答無用。
timeToLiveSeconds < timeToIdleSecondsの場合
These two values work together. However, a timeToLive < timeToIdle setting doesn't make much sense.
timeToLiveSeconds < timeToIdleSecondsはうまくないというのはその通り。
timeToIdleSecondsで設定した時間内にアクセスがあっても、先にtimeToLiveSecondsで設定した生存期間を過ぎて削除されちゃったら意味ないもんね。
逆にtimeToIdleSeconds < timeToLiveSecondsは意味がある。
timeToLiveSecondsで設定した時間が経つと必ず削除されるけど、timeToIdleSecondsで設定した時間内に参照されれば、そのときはキャッシュからデータを返してくれる。