Categorygithub.com/hashicorp/golang-lru/v2
modulepackage
2.0.7
Repository: https://github.com/hashicorp/golang-lru.git
Documentation: pkg.go.dev

# README

golang-lru

This provides the lru package which implements a fixed-size thread safe LRU cache. It is based on the cache in Groupcache.

Documentation

Full docs are available on Go Packages

LRU cache example

package main

import (
	"fmt"
	"github.com/hashicorp/golang-lru/v2"
)

func main() {
	l, _ := lru.New[int, any](128)
	for i := 0; i < 256; i++ {
		l.Add(i, nil)
	}
	if l.Len() != 128 {
		panic(fmt.Sprintf("bad len: %v", l.Len()))
	}
}

Expirable LRU cache example

package main

import (
	"fmt"
	"time"

	"github.com/hashicorp/golang-lru/v2/expirable"
)

func main() {
	// make cache with 10ms TTL and 5 max keys
	cache := expirable.NewLRU[string, string](5, nil, time.Millisecond*10)


	// set value under key1.
	cache.Add("key1", "val1")

	// get value under key1
	r, ok := cache.Get("key1")

	// check for OK value
	if ok {
		fmt.Printf("value before expiration is found: %v, value: %q\n", ok, r)
	}

	// wait for cache to expire
	time.Sleep(time.Millisecond * 12)

	// get value under key1 after key expiration
	r, ok = cache.Get("key1")
	fmt.Printf("value after expiration is found: %v, value: %q\n", ok, r)

	// set value under key2, would evict old entry because it is already expired.
	cache.Add("key2", "val2")

	fmt.Printf("Cache len: %d\n", cache.Len())
	// Output:
	// value before expiration is found: true, value: "val1"
	// value after expiration is found: false, value: ""
	// Cache len: 1
}

# Packages

No description provided by the author
Package simplelru provides simple LRU implementation based on build-in container/list.

# Functions

New creates an LRU of the given size.
New2Q creates a new TwoQueueCache using the default values for the parameters.
New2QParams creates a new TwoQueueCache using the provided parameter values.
NewWithEvict constructs a fixed size cache with the given eviction callback.

# Constants

Default2QGhostEntries is the default ratio of ghost entries kept to track entries recently evicted.
Default2QRecentRatio is the ratio of the 2Q cache dedicated to recently added entries that have only been accessed once.
DefaultEvictedBufferSize defines the default buffer size to store evicted key/val.

# Structs

Cache is a thread-safe fixed size LRU cache.
TwoQueueCache is a thread-safe fixed size 2Q cache.