goburrow
cache
Go

Mango Cache 🥭 - Partial implementation of Guava Cache in Go (golang).

Last updated Jun 30, 2026
600
Stars
47
Forks
11
Issues
0
Stars/day
Attention Score
25
Language breakdown
No language data available.
Files click to expand
README

Mango Cache

GoDoc Go

Partial implementations of Guava Cache in Go.

Supported cache replacement policies:

  • LRU
  • Segmented LRU (default)
  • TinyLFU (experimental)
The TinyLFU implementation is inspired by Caffeine by Ben Manes and go-tinylfu by Damian Gryski.

Download

go get -u github.com/goburrow/cache

Example

package main

import ( "fmt" "math/rand" "time"

"github.com/goburrow/cache" )

func main() { load := func(k cache.Key) (cache.Value, error) { time.Sleep(100 * time.Millisecond) // Slow task return fmt.Sprintf("%d", k), nil } // Create a loading cache c := cache.NewLoadingCache(load, cache.WithMaximumSize(100), // Limit number of entries in the cache. cache.WithExpireAfterAccess(1*time.Minute), // Expire entries after 1 minute since last accessed. cache.WithRefreshAfterWrite(2*time.Minute), // Expire entries after 2 minutes since last created. )

getTicker := time.Tick(100 * time.Millisecond) reportTicker := time.Tick(5 * time.Second) for { select { case <-getTicker: , = c.Get(rand.Intn(200)) case <-reportTicker: st := cache.Stats{} c.Stats(&st) fmt.Printf("%+v\n", st) } } }

Performance

See traces and benchmark

report

🔗 More in this category

© 2026 GitRepoTrend · goburrow/cache · Updated daily from GitHub