Ristretto is a fast, concurrent cache library using a TinyLFU admission policy and Sampled LFU eviction policy.
package main
import (
"fmt"
"time"
"github.com/dgraph-io/ristretto"
)
func main() {
// create a cache instance
cache, err := ristretto.NewCache(&ristretto.Config{
NumCounters: 1000000 * 10,
MaxCost: 1000000,
BufferItems: 64,
})
if err != nil {
panic(err)
}
// set a value
cache.Set("key", "value", 1)
// wait for value to pass through buffers
time.Sleep(time.Second / 100)
// get a value, given a key
value, found := cache.Get("key")
if !found {
panic("missing value")
}
fmt.Println(value)
// delete a value, given a key
cache.Del("key")
}
The benchmarks can be found in https://github.com/dgraph-io/benchmarks/tree/master/cachebench/ristretto
This trace is described as "disk read accesses initiated by a large commercial search engine in response to various web search requests."
This trace is described as "a database server running at a commercial site running an ERP application on top of a commercial database."
This trace demonstrates a looping access pattern.
This trace is described as "references to a CODASYL database for a one hour period."
All throughput benchmarks were ran on an Intel Core i7-8700K (3.7GHz) with 16gb of RAM.