Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Update evictionPool every time we call
freeMemoryIfNeeded
,in case the old candidates is not the best, imagine that:
Time1: we need free memory and populate some keys to evictionPool
like that: A:10,B:9,C:8
Time2: we delete the bestkey A and free enough memory, then keys
in evictionPool are: B:9,C:8
Time3: we need free memory again, and the idle time of B is 3,
but B is already in evctionPool and idle time is 9, so
we take it as the bestkey to delete, but it is not the
correct bestkey.
Also we should update evictionPool in case
maxmemory-policy
changed,because LRU, LFU and TTL has different meanings.
BTW, compare to the whole eviction cycle, update evictionPool before the cycle is not a big deal.