Skip to content

Latest commit

 

History

History
51 lines (37 loc) · 1.61 KB

README.md

File metadata and controls

51 lines (37 loc) · 1.61 KB

Go Access Cache

Go Report Card

A simple in memory cache with a maximum byte size keeping most and recent requested elements in memory while rotating rarely requested elements out.

Example

m := accesscache.NewAccessCache(60)

// Adding first item, cache size will be 28
m.Set("key-a", "first string")
log.Println("Highest Prio Item:", m.GetLastViewedKey(), "Cache Size:", m.GetCacheSize())

// Adding second item, cache size will be 57
m.Set("key-b", "second string")
log.Println("Highest Prio Item:", m.GetLastViewedKey(), "Cache Size:", m.GetCacheSize())

// Requesting first item, it get the highest prio, cache size remains 57
m.Get("key-a")
log.Println("Highest Prio Item:", m.GetLastViewedKey(), "Cache Size:", m.GetCacheSize())

// Adding third item, lowest prio item gets rotated out because cache size > 60
// third item get highest prio, cache size is at 56
m.Set("key-c", "third string")
log.Println("Highest Prio Item:", m.GetLastViewedKey(), "Cache Size:", m.GetCacheSize())

// Requesting first item, wich again gets the highest prio, cache size is at 56
// containing only the first and the second item
m.Get("key-a")
log.Println("Highest Prio Item:", m.GetLastViewedKey(), "Cache Size:", m.GetCacheSize())

Usage

instantiate new access cache with a size of 1024 bytes

m := NewAccessCache(1024)

add value 42 to cache using a unique key "mykey"

m.Set("mykey", 42)

retrieve value from cache by key "mykey"

value, exists = m.Get("mykey")