lru: cache value instead of pointer
This commit is contained in:
@ -12,7 +12,7 @@ type LRU[T any] struct {
|
|||||||
}
|
}
|
||||||
type item[T any] struct {
|
type item[T any] struct {
|
||||||
key string
|
key string
|
||||||
value *T
|
value T
|
||||||
eol time.Time
|
eol time.Time
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -30,7 +30,7 @@ func (lru *LRU[T]) Set(key string, value T, ttl time.Duration) (evicted bool) {
|
|||||||
if element, ok := lru.items[key]; ok {
|
if element, ok := lru.items[key]; ok {
|
||||||
lru.queue.MoveToFront(element)
|
lru.queue.MoveToFront(element)
|
||||||
item := element.Value.(*item[T])
|
item := element.Value.(*item[T])
|
||||||
item.value = &value
|
item.value = value
|
||||||
item.eol = eol
|
item.eol = eol
|
||||||
|
|
||||||
return
|
return
|
||||||
@ -43,7 +43,7 @@ func (lru *LRU[T]) Set(key string, value T, ttl time.Duration) (evicted bool) {
|
|||||||
|
|
||||||
item := &item[T]{
|
item := &item[T]{
|
||||||
key: key,
|
key: key,
|
||||||
value: &value,
|
value: value,
|
||||||
eol: eol,
|
eol: eol,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -68,7 +68,7 @@ func (lru *LRU[T]) Get(name string) (value T, ok bool) {
|
|||||||
|
|
||||||
lru.queue.MoveToFront(element)
|
lru.queue.MoveToFront(element)
|
||||||
|
|
||||||
return *item.value, true
|
return item.value, true
|
||||||
}
|
}
|
||||||
|
|
||||||
func (lru *LRU[T]) evict() {
|
func (lru *LRU[T]) evict() {
|
||||||
|
Reference in New Issue
Block a user