lru

package
v0.4.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 25, 2023 License: Apache-2.0, MIT Imports: 5 Imported by: 0

README

LRU

This is a Least Recently Used cache backed by a generic doubly linked list with O(1) time complexity.

When to use

You would typically use an LRU cache when:

  • Capacity of cache will hold nearly all data.
  • Entries being used are being used on a consistent frequency.

Both above will prevent large amounts of data flapping in and out of the cache. If your cache can only hold a fraction of values being stored or data seen on a cadence but high frequency, check out using the LFU cache instead.

Usage

package main

import (
	"fmt"
	"github.com/go-playground/cache/lru"
	"time"
)

func main() {
	cache := lru.New[string, string](100).MaxAge(time.Hour).HitFn(func(key string, value string) {
		fmt.Printf("Hit Key: %s Value %s\n", key, value)
	}).Build()
	cache.Set("a", "b")
	cache.Set("c", "d")

	option := cache.Get("a")
	if option.IsNone() {
		return
	}
	fmt.Println("result:", option.Unwrap())
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func New

func New[K comparable, V any](capacity int) *builder[K, V]

New initializes a builder to create an LRU cache.

Types

type Cache added in v0.2.0

type Cache[K comparable, V any] struct {
	// contains filtered or unexported fields
}

Cache is a configured least recently used cache ready for use.

func (*Cache[K, V]) Capacity added in v0.2.0

func (cache *Cache[K, V]) Capacity() (capacity int)

Capacity returns the current configured capacity of the cache.

func (*Cache[K, V]) Clear added in v0.2.0

func (cache *Cache[K, V]) Clear()

Clear empties the cache.

func (*Cache[K, V]) Get added in v0.2.0

func (cache *Cache[K, V]) Get(key K) (result optionext.Option[V])

Get attempts to find an existing cache entry by key. It returns an Option you must check before using the underlying value.

func (*Cache[K, V]) Len added in v0.2.0

func (cache *Cache[K, V]) Len() (length int)

Len returns the current size of the cache. The result will include items that may be expired past the max age as they are passively expired.

func (*Cache[K, V]) PercentageFull added in v0.4.0

func (cache *Cache[K, V]) PercentageFull() (full float64)

PercentageFull is a convenience function to grab the information with one lock instead of the two that would have been needed by calling `Len` and `Capacity` separately.

func (*Cache[K, V]) Remove added in v0.2.0

func (cache *Cache[K, V]) Remove(key K)

Remove removes the item matching the provided key from the cache, if not present is a noop.

func (*Cache[K, V]) Set added in v0.2.0

func (cache *Cache[K, V]) Set(key K, value V)

Set sets an item into the cache. It will replace the current entry if there is one.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL