cache

package
v0.18.3 Latest Latest
Warning

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

Go to latest
Published: Mar 14, 2024 License: Apache-2.0 Imports: 3 Imported by: 9

Documentation

Overview

Package cache implements a LRU cache.

The implementation borrows heavily from SmallLRUCache (originally by Nathan Schrenk). The object maintains a doubly-linked list of elements. When an element is accessed, it is promoted to the head of the list. When space is needed, the element at the tail of the list (the least recently used element) is evicted.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Item

type Item struct {
	Key   string
	Value any
}

Item is what is stored in the cache

type LRUCache

type LRUCache struct {
	// contains filtered or unexported fields
}

LRUCache is a typical LRU cache implementation. If the cache reaches the capacity, the least recently used item is deleted from the cache. Note the capacity is not the number of items, but the total sum of the CachedSize() of each item.

func NewLRUCache

func NewLRUCache(capacity int64, cost func(any) int64) *LRUCache

NewLRUCache creates a new empty cache with the given capacity.

func (*LRUCache) Clear

func (lru *LRUCache) Clear()

Clear will clear the entire cache.

func (*LRUCache) Close added in v0.18.0

func (lru *LRUCache) Close()

func (*LRUCache) Delete

func (lru *LRUCache) Delete(key string)

Delete removes an entry from the cache

func (*LRUCache) Evictions

func (lru *LRUCache) Evictions() int64

Evictions returns the number of evictions

func (*LRUCache) ForEach added in v0.10.0

func (lru *LRUCache) ForEach(callback func(value any) bool)

ForEach yields all the values for the cache, ordered from most recently used to least recently used.

func (*LRUCache) Get

func (lru *LRUCache) Get(key string) (v any, ok bool)

Get returns a value from the cache, and marks the entry as most recently used.

func (*LRUCache) Hits added in v0.13.0

func (lru *LRUCache) Hits() int64

Hits returns number of cache hits since creation

func (*LRUCache) Items

func (lru *LRUCache) Items() []Item

Items returns all the values for the cache, ordered from most recently used to least recently used.

func (*LRUCache) Len added in v0.10.0

func (lru *LRUCache) Len() int

Len returns the size of the cache (in entries)

func (*LRUCache) MaxCapacity added in v0.10.0

func (lru *LRUCache) MaxCapacity() int64

MaxCapacity returns the cache maximum capacity.

func (*LRUCache) Misses added in v0.13.0

func (lru *LRUCache) Misses() int64

Misses returns number of cache misses since creation

func (*LRUCache) Set

func (lru *LRUCache) Set(key string, value any) bool

Set sets a value in the cache.

func (*LRUCache) SetCapacity

func (lru *LRUCache) SetCapacity(capacity int64)

SetCapacity will set the capacity of the cache. If the capacity is smaller, and the current cache size exceed that capacity, the cache will be shrank.

func (*LRUCache) UsedCapacity added in v0.10.0

func (lru *LRUCache) UsedCapacity() int64

UsedCapacity returns the size of the cache (in bytes)

func (*LRUCache) Wait added in v0.10.0

func (lru *LRUCache) Wait()

Wait is a no-op in the LRU cache

Directories

Path Synopsis
bf

Jump to

Keyboard shortcuts

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