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