| 123456789101112131415161718192021222324 |
- // Copyright (c) HashiCorp, Inc.
- // SPDX-License-Identifier: MPL-2.0
- // Package lru provides three different LRU caches of varying sophistication.
- //
- // Cache is a simple LRU cache. It is based on the LRU implementation in
- // groupcache: https://github.com/golang/groupcache/tree/master/lru
- //
- // TwoQueueCache tracks frequently used and recently used entries separately.
- // This avoids a burst of accesses from taking out frequently used entries, at
- // the cost of about 2x computational overhead and some extra bookkeeping.
- //
- // ARCCache is an adaptive replacement cache. It tracks recent evictions as well
- // as recent usage in both the frequent and recent caches. Its computational
- // overhead is comparable to TwoQueueCache, but the memory overhead is linear
- // with the size of the cache.
- //
- // ARC has been patented by IBM, so do not use it if that is problematic for
- // your program. For this reason, it is in a separate go module contained within
- // this repository.
- //
- // All caches in this package take locks while operating, and are therefore
- // thread-safe for consumers.
- package lru
|