一个使用go泛型的简单LRU缓存

337 阅读1分钟

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