Documentation
¶
Index ¶
- Variables
- func RegisterEvictionAlgorithm(name string, createFunc func(capacity int) (IAlgorithm, error))
- func RegisterEvictionAlgorithms(algorithms map[string]func(capacity int) (IAlgorithm, error))
- type ARC
- type CAWOLFU
- type CAWOLFULinkedList
- type CAWOLFUNode
- type ClockAlgorithm
- type FrequencyHeap
- type IAlgorithm
- type LFUAlgorithm
- type LRU
- type Node
Constants ¶
This section is empty.
Variables ¶
var CAWOLFUNodePool = sync.Pool{ New: func() any { return &CAWOLFUNode{} }, }
CAWOLFUNodePool is a pool of CAWOLFUNode values.
var LRUCacheItemmPool = sync.Pool{
New: func() interface{} {
return &lruCacheItem{}
},
}
LRUCacheItemmPool is a pool of LRUCacheItemm values.
Functions ¶
func RegisterEvictionAlgorithm ¶
func RegisterEvictionAlgorithm(name string, createFunc func(capacity int) (IAlgorithm, error))
RegisterEvictionAlgorithm registers a new eviction algorithm with the given name.
func RegisterEvictionAlgorithms ¶ added in v0.0.7
func RegisterEvictionAlgorithms(algorithms map[string]func(capacity int) (IAlgorithm, error))
RegisterEvictionAlgorithms registers a set of eviction algorithms.
Types ¶
type ARC ¶
type ARC struct {
// contains filtered or unexported fields
}
ARC is an in-memory cache that uses the Adaptive Replacement Cache (ARC) algorithm to manage its items.
func NewARCAlgorithm ¶ added in v0.1.3
NewARCAlgorithm creates a new in-memory cache with the given capacity and the Adaptive Replacement Cache (ARC) algorithm. If the capacity is negative, it returns an error.
func (*ARC) Evict ¶
Evict removes an item from the cache and returns the key of the evicted item. If no item can be evicted, it returns an error.
type CAWOLFU ¶
type CAWOLFU struct {
// contains filtered or unexported fields
}
CAWOLFU is an eviction algorithm that uses the Cache-Aware Write-Optimized LFU (CAWOLFU) policy to select items for eviction.
func NewCAWOLFU ¶
NewCAWOLFU returns a new CAWOLFU with the given capacity.
type CAWOLFULinkedList ¶
type CAWOLFULinkedList struct {
// contains filtered or unexported fields
}
CAWOLFULinkedList is a struct that represents a linked list. It has a head and tail field.
type CAWOLFUNode ¶
type CAWOLFUNode struct {
// contains filtered or unexported fields
}
CAWOLFUNode is a struct that represents a node in the linked list. It has a key, value, and access count field.
type ClockAlgorithm ¶
type ClockAlgorithm struct {
// contains filtered or unexported fields
}
ClockAlgorithm is an in-memory cache with the Clock algorithm.
func NewClockAlgorithm ¶
func NewClockAlgorithm(capacity int) (*ClockAlgorithm, error)
NewClockAlgorithm creates a new in-memory cache with the given capacity and the Clock algorithm.
func (*ClockAlgorithm) Delete ¶
func (c *ClockAlgorithm) Delete(key string)
Delete deletes the item with the given key from the cache.
func (*ClockAlgorithm) Evict ¶
func (c *ClockAlgorithm) Evict() (string, bool)
Evict evicts an item from the cache based on the Clock algorithm.
func (*ClockAlgorithm) Get ¶
func (c *ClockAlgorithm) Get(key string) (any, bool)
Get retrieves the item with the given key from the cache.
func (*ClockAlgorithm) Set ¶
func (c *ClockAlgorithm) Set(key string, value any)
Set sets the item with the given key and value in the cache.
type FrequencyHeap ¶ added in v0.1.3
type FrequencyHeap []*Node
FrequencyHeap is a heap of Nodes.
func (FrequencyHeap) Len ¶ added in v0.1.3
func (fh FrequencyHeap) Len() int
Len returns the length of the heap.
func (FrequencyHeap) Less ¶ added in v0.1.3
func (fh FrequencyHeap) Less(i, j int) bool
Less returns true if the node at index i has a lower frequency than the node at index j.
func (*FrequencyHeap) Pop ¶ added in v0.1.3
func (fh *FrequencyHeap) Pop() interface{}
Pop removes the last node from the heap.
func (*FrequencyHeap) Push ¶ added in v0.1.3
func (fh *FrequencyHeap) Push(x interface{})
Push adds a node to the heap.
func (FrequencyHeap) Swap ¶ added in v0.1.3
func (fh FrequencyHeap) Swap(i, j int)
Swap swaps the nodes at index i and j.
type IAlgorithm ¶ added in v0.0.6
type IAlgorithm interface { // Evict returns the next item to be evicted from the cache. Evict() (string, bool) // Set adds a new item to the cache with the given key. Set(key string, value any) // Get retrieves the item with the given key from the cache. Get(key string) (any, bool) // Delete removes the item with the given key from the cache. Delete(key string) }
IAlgorithm is the interface that must be implemented by eviction algorithms.
func NewEvictionAlgorithm ¶
func NewEvictionAlgorithm(algorithmName string, capacity int) (IAlgorithm, error)
NewEvictionAlgorithm creates a new eviction algorithm with the given capacity. If the capacity is negative, it returns an error. The algorithmName parameter is used to select the eviction algorithm from the registry.
type LFUAlgorithm ¶
type LFUAlgorithm struct {
// contains filtered or unexported fields
}
LFUAlgorithm is an eviction algorithm that uses the Least Frequently Used (LFU) policy to select items for eviction.
func NewLFUAlgorithm ¶
func NewLFUAlgorithm(capacity int) (*LFUAlgorithm, error)
NewLFUAlgorithm creates a new LFUAlgorithm with the given capacity.
func (*LFUAlgorithm) Delete ¶
func (l *LFUAlgorithm) Delete(key string)
Delete deletes a key-value pair from the cache.
func (*LFUAlgorithm) Evict ¶
func (l *LFUAlgorithm) Evict() (string, bool)
Evict evicts an item from the cache based on the LFU algorithm.
func (*LFUAlgorithm) Get ¶
func (l *LFUAlgorithm) Get(key string) (any, bool)
Get gets a value from the cache.
func (*LFUAlgorithm) Set ¶
func (l *LFUAlgorithm) Set(key string, value any)
Set sets a key-value pair in the cache.
type LRU ¶
type LRU struct { sync.RWMutex // The mutex used to protect the cache // contains filtered or unexported fields }
LRU represents a LRU cache
func NewLRUAlgorithm ¶ added in v0.1.3
NewLRUAlgorithm creates a new LRU cache with the given capacity