dcrd/lru
Dave Collins 7d59dd3b69
multi: Support module graph prune and lazy load.
This bumps the go directive for all of the modules provided by the
repository to 1.17 which will allow the new module graph pruning and
lazy loading capabilities introduced in Go 1.17 to be used once the
updated modules are released.

This means that, as described by the documentation, the go.mod files for
each module now include a separate require block that includes all of
the indirect dependencies
2022-03-25 07:20:01 -05:00
..
cache_test.go multi: Correct typos. 2019-08-22 10:20:03 -05:00
cache.go multi: Address a bunch of lint issues. 2019-12-30 13:54:41 -06:00
doc.go lru: add kv cache. 2019-11-12 00:00:06 -06:00
example_test.go lru: add kv cache. 2019-11-12 00:00:06 -06:00
go.mod multi: Support module graph prune and lazy load. 2022-03-25 07:20:01 -05:00
kv_test.go lru: add kv cache. 2019-11-12 00:00:06 -06:00
kv.go lru: Fix lookup race on small caches. 2020-11-09 15:32:22 -06:00
README.md multi: Update README.md files for go modules. 2021-01-22 14:39:23 -06:00

lru

Build Status ISC License Doc

Package lru implements generic least-recently-used caches with near O(1) perf.

LRU Cache

A least-recently-used (LRU) cache is a cache that holds a limited number of items with an eviction policy such that when the capacity of the cache is exceeded, the least-recently-used item is automatically removed when inserting a new item. The meaning of used in this implementation is either accessing the item via a lookup or adding the item into the cache, including when the item already exists.

External Use

This package has intentionally been designed so it can be used as a standalone package for any projects needing to make use of well-tested and concurrent safe least-recently-used caches with near O(1) performance characteristics for lookups, inserts, and deletions.

Installation and Updating

This package is part of the github.com/decred/dcrd/lru module. Use the standard go tooling for working with modules to incorporate it.

Examples

  • Basic Cache Usage Demonstrates creating a new cache instance, inserting items into the cache, causing an eviction of the least-recently-used item, and removing an item.

  • Basic KV Cache Usage Demonstrates creating a new k/v cache instance, inserting items into the cache, causing an eviction of the least-recently-used item, and removing an item.

License

Package lru is licensed under the copyfree ISC License.