Help us shape the future of Go! Take the 2026 Go Developer Survey

cache

package
v0.1.7 Latest Latest
Warning

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

Go to latest
Published: Oct 30, 2026 License: Apache-2.0 Imports: 4 Imported by: 0

Documentation

Overview

Package cache 提供支持容量、权重和淘汰保护的并发安全缓存。

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type LRU

type LRU[K comparable, V any] struct {
	// contains filtered or unexported fields
}

LRU 是一个并发安全的最近最少使用缓存。 缓存同时受条目数量和可选总权重限制;条目淘汰后会在缓存锁释放后调用 onEvict。

func NewLRU

func NewLRU[K comparable, V any](capacity int, onEvict func(K, V)) *LRU[K, V]

NewLRU 创建只按条目数量限制的 LRU 缓存。

func NewWeightedLRU

func NewWeightedLRU[K comparable, V any](capacity int, maxWeight int64, onEvict func(K, V), canEvict ...func(K, V) bool) *LRU[K, V]

NewWeightedLRU 创建按条目数量和总权重限制的 LRU 缓存。 maxWeight 小于等于 0 表示不启用权重限制。可选的 canEvict 只用于暂时保护条目。

func (*LRU[K, V]) Add

func (c *LRU[K, V]) Add(key K, value V)

Add 添加一个权重为 1 的条目。

func (*LRU[K, V]) AddWeighted

func (c *LRU[K, V]) AddWeighted(key K, value V, weight int64)

AddWeighted 添加一个带权重的条目;负权重按 0 处理。

func (*LRU[K, V]) Get

func (c *LRU[K, V]) Get(key K) (V, bool)

Get 获取 key 对应的值,并将该条目提升为最近使用条目。

func (*LRU[K, V]) Len

func (c *LRU[K, V]) Len() int

Len 返回当前缓存中的条目数量。

func (*LRU[K, V]) Trim

func (c *LRU[K, V]) Trim()

Trim 主动按当前容量和权重限制清理可淘汰条目。 被淘汰策略保护的条目会暂时保留,待之后再次调用 Trim 时处理。

func (*LRU[K, V]) Values

func (c *LRU[K, V]) Values() []V

Values 返回当前缓存的全部值,按最近使用顺序。

调用方据此做收尾(如释放条目持有的重资源)时要注意:拿到的只是快照,之后 缓存仍可能被并发修改;因此适合在已经停用该缓存之后调用。

func (*LRU[K, V]) Weight

func (c *LRU[K, V]) Weight() int64

Weight 返回当前缓存条目的总权重,超过 int64 范围时返回 math.MaxInt64。 内部仍精确记账,淘汰或替换条目后会恢复实际可表示的权重。

Jump to

Keyboard shortcuts

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