lru

package
v0.0.0-...-4d13c9b Latest Latest
Warning

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

Go to latest
Published: May 16, 2019 License: GPL-3.0 Imports: 2 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type EvictCallback

type EvictCallback func(EvictionReason, uuid.UUID, models.Record)

EvictCallback lets you know when an eviction has happened in the cache

type EvictionReason

type EvictionReason int

EvictionReason describes why the eviction happened

const (
	// Purged by calling reset
	Purged EvictionReason = iota

	// Popped manually from the cache
	Popped

	// Removed manually from the cache
	Removed

	// Dequeued by walking over due to being dequeued
	Dequeued
)

type KeyValue

type KeyValue struct {
	Key   uuid.UUID
	Value models.Record
}

type LRU

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

LRU implements a non-thread safe fixed size LRU cache

func NewLRU

func NewLRU(size int, onEvict EvictCallback) *LRU

NewLRU creates a LRU cache with a size and callback on eviction

func (*LRU) Add

func (l *LRU) Add(key uuid.UUID, value models.Record) bool

Add adds a key, value pair. Returns true if an eviction happened.

func (*LRU) Cap

func (l *LRU) Cap() int

Cap returns the current cap limit to the LRU cache

func (*LRU) Capacity

func (l *LRU) Capacity() bool

Capacity returns if the LRU cache is at capacity or not.

func (*LRU) Contains

func (l *LRU) Contains(key uuid.UUID) bool

Contains finds out if a key is present in the LRU cache

func (*LRU) Dequeue

func (l *LRU) Dequeue(fn func(uuid.UUID, models.Record) error) ([]KeyValue, error)

Dequeue iterates over the LRU cache removing an item upon each iteration.

func (*LRU) Get

func (l *LRU) Get(key uuid.UUID) (value models.Record, ok bool)

Get returns back a value if it exists. Returns true if found.

func (*LRU) Keys

func (l *LRU) Keys() []uuid.UUID

Keys returns the keys as a slice

func (*LRU) Len

func (l *LRU) Len() int

Len returns the current length of the LRU cache

func (*LRU) Peek

func (l *LRU) Peek(key uuid.UUID) (value models.Record, ok bool)

Peek returns a value, without marking the LRU cache. Returns true if a value is found.

func (*LRU) Pop

func (l *LRU) Pop() (uuid.UUID, models.Record, bool)

Pop removes the last LRU item with in the cache

func (*LRU) Purge

func (l *LRU) Purge()

Purge removes all items with in the cache, calling evict callback on each.

func (*LRU) Remove

func (l *LRU) Remove(key uuid.UUID) (ok bool)

Remove a value using it's key Returns true if a removal happened

func (*LRU) Slice

func (l *LRU) Slice() []KeyValue

Slice returns a snapshot of the KeyValue pairs.

Source Files

  • list.go
  • lru.go

Jump to

Keyboard shortcuts

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