Documentation ¶
Index ¶
- type Cache
- type HashKeyCallback
- type LRU
- func (lru *LRU[K, V]) Add(key K, value V) (evicted bool)
- func (lru *LRU[K, V]) AddWithLifetime(key K, value V, lifetime time.Duration) (evicted bool)
- func (lru *LRU[K, V]) Contains(key K) (ok bool)
- func (lru *LRU[K, V]) Get(key K) (value V, ok bool)
- func (lru *LRU[K, V]) Keys() []K
- func (lru *LRU[K, V]) Len() int
- func (lru *LRU[K, V]) Metrics() Metrics
- func (lru *LRU[K, V]) Peek(key K) (value V, ok bool)
- func (lru *LRU[K, V]) PrintStats()
- func (lru *LRU[K, V]) Purge()
- func (lru *LRU[K, V]) Remove(key K) (removed bool)
- func (lru *LRU[K, V]) ResetMetrics() Metrics
- func (lru *LRU[K, V]) SetLifetime(lifetime time.Duration)
- func (lru *LRU[K, V]) SetOnEvict(onEvict OnEvictCallback[K, V])
- type Metrics
- type OnEvictCallback
- type ShardedLRU
- func (lru *ShardedLRU[K, V]) Add(key K, value V) (evicted bool)
- func (lru *ShardedLRU[K, V]) AddWithLifetime(key K, value V, lifetime time.Duration) (evicted bool)
- func (lru *ShardedLRU[K, V]) Contains(key K) (ok bool)
- func (lru *ShardedLRU[K, V]) Get(key K) (value V, ok bool)
- func (lru *ShardedLRU[K, V]) Keys() []K
- func (lru *ShardedLRU[K, V]) Len() (length int)
- func (lru *ShardedLRU[K, V]) Metrics() Metrics
- func (lru *ShardedLRU[K, V]) Peek(key K) (value V, ok bool)
- func (lru *ShardedLRU[K, V]) PrintStats()
- func (lru *ShardedLRU[K, V]) Purge()
- func (lru *ShardedLRU[K, V]) Remove(key K) (removed bool)
- func (lru *ShardedLRU[K, V]) ResetMetrics() Metrics
- func (lru *ShardedLRU[K, V]) SetLifetime(lifetime time.Duration)
- func (lru *ShardedLRU[K, V]) SetOnEvict(onEvict OnEvictCallback[K, V])
- type SyncedLRU
- func (lru *SyncedLRU[K, V]) Add(key K, value V) (evicted bool)
- func (lru *SyncedLRU[K, V]) AddWithLifetime(key K, value V, lifetime time.Duration) (evicted bool)
- func (lru *SyncedLRU[K, V]) Contains(key K) (ok bool)
- func (lru *SyncedLRU[K, V]) Get(key K) (value V, ok bool)
- func (lru *SyncedLRU[K, V]) Keys() (keys []K)
- func (lru *SyncedLRU[K, V]) Len() (length int)
- func (lru *SyncedLRU[K, V]) Metrics() Metrics
- func (lru *SyncedLRU[K, V]) Peek(key K) (value V, ok bool)
- func (lru *SyncedLRU[K, V]) PrintStats()
- func (lru *SyncedLRU[K, V]) Purge()
- func (lru *SyncedLRU[K, V]) Remove(key K) (removed bool)
- func (lru *SyncedLRU[K, V]) ResetMetrics() Metrics
- func (lru *SyncedLRU[K, V]) SetLifetime(lifetime time.Duration)
- func (lru *SyncedLRU[K, V]) SetOnEvict(onEvict OnEvictCallback[K, V])
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Cache ¶ added in v0.11.0
type Cache[K comparable, V any] interface { // SetLifetime sets the default lifetime of LRU elements. // Lifetime 0 means "forever". SetLifetime(lifetime time.Duration) // SetOnEvict sets the OnEvict callback function. // The onEvict function is called for each evicted lru entry. SetOnEvict(onEvict OnEvictCallback[K, V]) // Len returns the number of elements stored in the cache. Len() int // AddWithLifetime adds a key:value to the cache with a lifetime. // Returns true, true if key was updated and eviction occurred. AddWithLifetime(key K, value V, lifetime time.Duration) (evicted bool) // Add adds a key:value to the cache. // Returns true, true if key was updated and eviction occurred. Add(key K, value V) (evicted bool) // Get retrieves an element from map under given key. Get(key K) (V, bool) // Peek retrieves an element from map under given key without updating the // "recently used"-ness of that key. Peek(key K) (V, bool) // Contains checks for the existence of a key, without changing its recent-ness. Contains(key K) bool // Remove removes an element from the map. // The return value indicates whether the key existed or not. Remove(key K) bool // Keys returns a slice of the keys in the cache, from oldest to newest. Keys() []K // Purge purges all data (key and value) from the LRU. Purge() // Metrics returns the metrics of the cache. Metrics() Metrics // ResetMetrics resets the metrics of the cache and returns the previous state. ResetMetrics() Metrics }
type HashKeyCallback ¶
type HashKeyCallback[K comparable] func(K) uint32
HashKeyCallback is the function that creates a hash from the passed key.
type LRU ¶
type LRU[K comparable, V any] struct { // contains filtered or unexported fields }
LRU implements a non-thread safe fixed size LRU cache.
func New ¶
func New[K comparable, V any](capacity uint32, hash HashKeyCallback[K]) (*LRU[K, V], error)
New constructs an LRU with the given capacity of elements. The hash function calculates a hash value from the keys.
func NewWithSize ¶ added in v0.3.0
func NewWithSize[K comparable, V any](capacity, size uint32, hash HashKeyCallback[K]) ( *LRU[K, V], error)
NewWithSize constructs an LRU with the given capacity and size. The hash function calculates a hash value from the keys. A size greater than the capacity increases memory consumption and decreases the CPU consumption by reducing the chance of collisions. Size must not be lower than the capacity.
func (*LRU[K, V]) Add ¶
Add adds a key:value to the cache. Returns true, true if key was updated and eviction occurred.
func (*LRU[K, V]) AddWithLifetime ¶ added in v0.7.0
AddWithLifetime adds a key:value to the cache with a lifetime. Returns true, true if key was updated and eviction occurred.
func (*LRU[K, V]) Contains ¶
Contains checks for the existence of a key, without changing its recent-ness.
func (*LRU[K, V]) Get ¶
Get looks up a key's value from the cache, setting it as the most recently used item.
func (*LRU[K, V]) Keys ¶
func (lru *LRU[K, V]) Keys() []K
Keys returns a slice of the keys in the cache, from oldest to newest.
func (*LRU[K, V]) Peek ¶
Peek looks up a key's value from the cache, without changing its recent-ness.
func (*LRU[K, V]) PrintStats ¶
func (lru *LRU[K, V]) PrintStats()
func (*LRU[K, V]) Purge ¶ added in v0.4.0
func (lru *LRU[K, V]) Purge()
Purge purges all data (key and value) from the LRU.
func (*LRU[K, V]) Remove ¶
Remove removes the key from the cache. The return value indicates whether the key existed or not.
func (*LRU[K, V]) ResetMetrics ¶ added in v0.12.0
ResetMetrics resets the metrics of the cache and returns the previous state.
func (*LRU[K, V]) SetLifetime ¶ added in v0.3.0
SetLifetime sets the default lifetime of LRU elements. Lifetime 0 means "forever".
func (*LRU[K, V]) SetOnEvict ¶ added in v0.3.0
func (lru *LRU[K, V]) SetOnEvict(onEvict OnEvictCallback[K, V])
SetOnEvict sets the OnEvict callback function. The onEvict function is called for each evicted lru entry.
type Metrics ¶ added in v0.12.0
type Metrics struct { Inserts uint64 Collisions uint64 Evictions uint64 Removals uint64 Hits uint64 Misses uint64 }
Metrics contains metrics about the cache.
type OnEvictCallback ¶
type OnEvictCallback[K comparable, V any] func(K, V)
OnEvictCallback is the function type for Config.OnEvict.
type ShardedLRU ¶ added in v0.9.0
type ShardedLRU[K comparable, V any] struct { // contains filtered or unexported fields }
ShardedLRU is a thread-safe, sharded, fixed size LRU cache. Sharding is used to reduce lock contention on high concurrency. The downside is that exact LRU behavior is not given (as for the LRU and SynchedLRU types).
func NewSharded ¶ added in v0.9.0
func NewSharded[K comparable, V any](capacity uint32, hash HashKeyCallback[K]) (*ShardedLRU[K, V], error)
NewSharded creates a new thread-safe sharded LRU hashmap with the given capacity.
func NewShardedWithSize ¶ added in v0.9.0
func NewShardedWithSize[K comparable, V any](shards, capacity, size uint32, hash HashKeyCallback[K]) ( *ShardedLRU[K, V], error)
func (*ShardedLRU[K, V]) Add ¶ added in v0.9.0
func (lru *ShardedLRU[K, V]) Add(key K, value V) (evicted bool)
Add adds a key:value to the cache. Returns true, true if key was updated and eviction occurred.
func (*ShardedLRU[K, V]) AddWithLifetime ¶ added in v0.9.0
func (lru *ShardedLRU[K, V]) AddWithLifetime(key K, value V, lifetime time.Duration) (evicted bool)
AddWithLifetime adds a key:value to the cache with a lifetime. Returns true, true if key was updated and eviction occurred.
func (*ShardedLRU[K, V]) Contains ¶ added in v0.9.0
func (lru *ShardedLRU[K, V]) Contains(key K) (ok bool)
Contains checks for the existence of a key, without changing its recent-ness.
func (*ShardedLRU[K, V]) Get ¶ added in v0.9.0
func (lru *ShardedLRU[K, V]) Get(key K) (value V, ok bool)
Get looks up a key's value from the cache, setting it as the most recently used item.
func (*ShardedLRU[K, V]) Keys ¶ added in v0.9.0
func (lru *ShardedLRU[K, V]) Keys() []K
Keys returns a slice of the keys in the cache, from oldest to newest.
func (*ShardedLRU[K, V]) Len ¶ added in v0.9.0
func (lru *ShardedLRU[K, V]) Len() (length int)
Len returns the number of elements stored in the cache.
func (*ShardedLRU[K, V]) Metrics ¶ added in v0.12.0
func (lru *ShardedLRU[K, V]) Metrics() Metrics
Metrics returns the metrics of the cache.
func (*ShardedLRU[K, V]) Peek ¶ added in v0.9.0
func (lru *ShardedLRU[K, V]) Peek(key K) (value V, ok bool)
Peek looks up a key's value from the cache, without changing its recent-ness.
func (*ShardedLRU[K, V]) PrintStats ¶ added in v0.9.0
func (lru *ShardedLRU[K, V]) PrintStats()
func (*ShardedLRU[K, V]) Purge ¶ added in v0.9.0
func (lru *ShardedLRU[K, V]) Purge()
Purge purges all data (key and value) from the LRU.
func (*ShardedLRU[K, V]) Remove ¶ added in v0.9.0
func (lru *ShardedLRU[K, V]) Remove(key K) (removed bool)
Remove removes the key from the cache. The return value indicates whether the key existed or not.
func (*ShardedLRU[K, V]) ResetMetrics ¶ added in v0.12.0
func (lru *ShardedLRU[K, V]) ResetMetrics() Metrics
ResetMetrics resets the metrics of the cache and returns the previous state.
func (*ShardedLRU[K, V]) SetLifetime ¶ added in v0.9.0
func (lru *ShardedLRU[K, V]) SetLifetime(lifetime time.Duration)
SetLifetime sets the default lifetime of LRU elements. Lifetime 0 means "forever".
func (*ShardedLRU[K, V]) SetOnEvict ¶ added in v0.9.0
func (lru *ShardedLRU[K, V]) SetOnEvict(onEvict OnEvictCallback[K, V])
SetOnEvict sets the OnEvict callback function. The onEvict function is called for each evicted lru entry.
type SyncedLRU ¶ added in v0.8.0
type SyncedLRU[K comparable, V any] struct { // contains filtered or unexported fields }
func NewSynced ¶ added in v0.8.0
func NewSynced[K comparable, V any](capacity uint32, hash HashKeyCallback[K]) (*SyncedLRU[K, V], error)
NewSynced creates a new thread-safe LRU hashmap with the given capacity.
func NewSyncedWithSize ¶ added in v0.8.0
func NewSyncedWithSize[K comparable, V any](capacity, size uint32, hash HashKeyCallback[K]) (*SyncedLRU[K, V], error)
func (*SyncedLRU[K, V]) Add ¶ added in v0.8.0
Add adds a key:value to the cache. Returns true, true if key was updated and eviction occurred.
func (*SyncedLRU[K, V]) AddWithLifetime ¶ added in v0.8.0
AddWithLifetime adds a key:value to the cache with a lifetime. Returns true, true if key was updated and eviction occurred.
func (*SyncedLRU[K, V]) Contains ¶ added in v0.8.0
Contains checks for the existence of a key, without changing its recent-ness.
func (*SyncedLRU[K, V]) Get ¶ added in v0.8.0
Get looks up a key's value from the cache, setting it as the most recently used item.
func (*SyncedLRU[K, V]) Keys ¶ added in v0.8.0
func (lru *SyncedLRU[K, V]) Keys() (keys []K)
Keys returns a slice of the keys in the cache, from oldest to newest.
func (*SyncedLRU[K, V]) Len ¶ added in v0.8.0
Len returns the number of elements stored in the cache.
func (*SyncedLRU[K, V]) Peek ¶ added in v0.8.0
Peek looks up a key's value from the cache, without changing its recent-ness.
func (*SyncedLRU[K, V]) PrintStats ¶ added in v0.8.0
func (lru *SyncedLRU[K, V]) PrintStats()
func (*SyncedLRU[K, V]) Purge ¶ added in v0.8.0
func (lru *SyncedLRU[K, V]) Purge()
Purge purges all data (key and value) from the LRU.
func (*SyncedLRU[K, V]) Remove ¶ added in v0.8.0
Remove removes the key from the cache. The return value indicates whether the key existed or not.
func (*SyncedLRU[K, V]) ResetMetrics ¶ added in v0.12.0
ResetMetrics resets the metrics of the cache and returns the previous state.
func (*SyncedLRU[K, V]) SetLifetime ¶ added in v0.8.0
SetLifetime sets the default lifetime of LRU elements. Lifetime 0 means "forever".
func (*SyncedLRU[K, V]) SetOnEvict ¶ added in v0.8.0
func (lru *SyncedLRU[K, V]) SetOnEvict(onEvict OnEvictCallback[K, V])
SetOnEvict sets the OnEvict callback function. The onEvict function is called for each evicted lru entry.