tiny

package
v1.2.6 Latest Latest
Warning

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

Go to latest
Published: Apr 16, 2024 License: MIT Imports: 4 Imported by: 0

Documentation

Overview

Package tiny 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   interface{}
	Value interface{}
}

Item is what is stored in the cache

type LRU

type LRU interface {
	// Get returns a value from the cache, and marks the entry as most recently used.
	Get(key interface{}) (v interface{}, ok bool)
	// Peek returns a value from the cache without changing the LRU order.
	Peek(key interface{}) (v interface{}, ok bool)
	// Exist : return true if key in map
	Exist(key interface{}) bool
	// Set sets a value in the cache.
	Set(key interface{}, value interface{})
	// Delete removes an entry from the cache, and returns if the entry existed.
	Delete(key interface{}) bool
}

LRU an interface to define a LRU cache, each v is regard same size

func NeWideLRU

func NeWideLRU(capacity int64, opts ...remap.Option) LRU

NeWideLRU new wide lru cache

func NewSingleLRUCache

func NewSingleLRUCache(capacity int64) LRU

NewSingleLRUCache create a single lru cache

func NewWideXHashLRU

func NewWideXHashLRU(capacity int64, opts ...remap.Option) LRU

NewWideXHashLRU new wide lru cache use xxhash as group

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 Size() of each item.

func NewLRUCache

func NewLRUCache(capacity int64) *LRUCache

NewLRUCache creates a new empty cache with the given capacity.

func (*LRUCache) Capacity

func (lru *LRUCache) Capacity() int64

Capacity returns the cache maximum capacity.

func (*LRUCache) Clear

func (lru *LRUCache) Clear()

Clear will clear the entire cache.

func (*LRUCache) Delete

func (lru *LRUCache) Delete(key interface{}) bool

Delete removes an entry from the cache, and returns if the entry existed.

func (*LRUCache) Evictions

func (lru *LRUCache) Evictions() int64

Evictions returns the eviction count.

func (*LRUCache) Exist

func (lru *LRUCache) Exist(key interface{}) bool

Exist : return true if key in map

func (*LRUCache) Get

func (lru *LRUCache) Get(key interface{}) (v interface{}, ok bool)

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

func (*LRUCache) Init

func (lru *LRUCache) Init(capacity int64)

Init : init memory

func (*LRUCache) Items

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

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

func (*LRUCache) Keys

func (lru *LRUCache) Keys() []interface{}

Keys returns all the keys for the cache, ordered from most recently used to last recently used.

func (*LRUCache) Length

func (lru *LRUCache) Length() int64

Length returns how many elements are in the cache

func (*LRUCache) Peek

func (lru *LRUCache) Peek(key interface{}) (v interface{}, ok bool)

Peek returns a value from the cache without changing the LRU order.

func (*LRUCache) Set

func (lru *LRUCache) Set(key interface{}, value interface{})

Set sets a value in the cache.

func (*LRUCache) SetAndGetRemoved

func (lru *LRUCache) SetAndGetRemoved(key interface{}, value interface{}) (removedValueList []interface{})

SetAndGetRemoved sets a value in the cache and returns the removed value list

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) SetIfAbsent

func (lru *LRUCache) SetIfAbsent(key interface{}, value interface{})

SetIfAbsent will set the value in the cache if not present. If the value exists in the cache, we don't set it.

func (*LRUCache) Size

func (lru *LRUCache) Size() int64

Size returns the sum of the objects' Size() method.

func (*LRUCache) Stats

func (lru *LRUCache) Stats() (length, size, capacity, evictions int64)

Stats returns a few stats on the cache.

func (*LRUCache) StatsJSON

func (lru *LRUCache) StatsJSON() string

StatsJSON returns stats as a JSON object in a string.

type WideLRUCache

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

WideLRUCache use LruCache group array as a wide lru cache

func (*WideLRUCache) Delete

func (w *WideLRUCache) Delete(key interface{}) bool

Delete removes an entry from the cache, and returns if the entry existed.

func (*WideLRUCache) Exist

func (w *WideLRUCache) Exist(key interface{}) bool

Exist : return true if key in map

func (*WideLRUCache) Get

func (w *WideLRUCache) Get(key interface{}) (v interface{}, ok bool)

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

func (*WideLRUCache) Peek

func (w *WideLRUCache) Peek(key interface{}) (v interface{}, ok bool)

Peek returns a value from the cache without changing the LRU order.

func (*WideLRUCache) Set

func (w *WideLRUCache) Set(key interface{}, value interface{})

Set sets a value in the cache.

Jump to

Keyboard shortcuts

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