1// Package lru provides three different LRU caches of varying sophistication. 2// 3// Cache is a simple LRU cache. It is based on the 4// LRU implementation in groupcache: 5// https://github.com/golang/groupcache/tree/master/lru 6// 7// TwoQueueCache tracks frequently used and recently used entries separately. 8// This avoids a burst of accesses from taking out frequently used entries, 9// at the cost of about 2x computational overhead and some extra bookkeeping. 10// 11// ARCCache is an adaptive replacement cache. It tracks recent evictions as 12// well as recent usage in both the frequent and recent caches. Its 13// computational overhead is comparable to TwoQueueCache, but the memory 14// overhead is linear with the size of the cache. 15// 16// ARC has been patented by IBM, so do not use it if that is problematic for 17// your program. 18// 19// All caches in this package take locks while operating, and are therefore 20// thread-safe for consumers. 21package lru 22