LRU缓存
一个使用go generics的简单LRU缓存。
当新的元素被添加时,如果达到了容量,它会自动移除元素。根据最近使用的时间来移除项目,最古老的项目会被首先移除。
参数
const (
// DefaultCacity is the default cache capacity
DefaultCapacity = 10000
)
类型
type Cache[K comparable, V any] struct {}
函数
New 用给定的容量初始化一个新的lru cache:
func New[K comparable, V any](cacheOptions ...CacheOption) *Cache[K, V]
从缓存中删除一个项目:
func (c *Cache[K, V]) Delete(key K) bool
Flush 删除缓存中的所有项目:
func (c *Cache[K, V]) Flush()
从缓存中获取一个项目。该操作更新该项目最近的使用情况:
func (c *Cache[K, V]) Get(key K) (value V, ok bool)
Keys 返回缓存中所有键的一个片断:
func (c *Cache[K, V]) Keys() []K
Len是缓存中键值对的数量:
func (c *Cache[K, V]) Len() int
Peek 从缓存中获取一个项目,但不更新最近使用情况:
func (c *Cache[K, V]) Peek(key K) (value V, ok bool)
设置给定的键值对。这个操作更新该项目最近的使用情况:
func (c *Cache[K, V]) Set(key K, value V)
CacheOption配置一个lru缓存
type CacheOption interface {}
WithCapacity配置了在旧项目开始被删除之前可以存储多少个项目:
func WithCapacity(capacity int) CacheOption