Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
lfucache: improve LFU algorithm and structure
Do it "more properly": use intrusive list linkage to manage three indices: * hash lookup * recency * frequency eviction is frequency based, but in order to avoid things that were super hot in the past and that are no longer hot clogging up the cache, eviction will incrementally age out least recently used entries that haven't been active in the span of some number of get/put operations. Aging scales down the frequency value to reduce its strength, so an aged item isn't necessarily immediately a candidate for removal, it just makes it more likely to be picked up by the frequency based removal as it goes unused for an extended period.
- Loading branch information