Skip to content

F-1X/lru

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Краткая информация:

  • lru - реализован на двусвязном списке.
  • lru_int_pool - реализован на двусвязном списке, только для key int, value int (для теста)
  • lru_pool - реализован на двусвязном списке, используя sync.Pool для хранения звеньев Node списка.

Преимущественно используйте lru_pool.


Команды:

Юнит тесты:

make unit_lru_pool

Бенчмарк:

make bench_lru_pool

Рейс детектор:

make race 

Дополнительные команды можно найти в Makefile.


Использование:

package main

import (
	"fmt"
	"log"
	"lru/lru_pool"
	"time"
)

func main() {
	capacity := 8192
	cache := lru_pool.NewCache(capacity)

	cache.Add("key1", "value1")

	cache.AddWithTTL("key2", "value2", time.Minute)

	value, ok := cache.Get("key1")
	if !ok {
		log.Fatal("unexcisting key")
	}
	fmt.Println(value)

	value, ok = cache.Get("key2")
	if !ok {
		log.Fatal("unexcisting key")
	}
	fmt.Println(value)
}

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published