GitHub - dgraph-io/ristretto: A high performance memory-bound Go cache
source link: https://github.com/dgraph-io/ristretto
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
README.md
Ristretto
Ristretto is a fast, concurrent cache library using a TinyLFU admission policy and Sampled LFU eviction policy.
The motivation to build Ristretto comes from the need for a contention-free cache in Dgraph.
Example
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") }
Benchmarks
The benchmarks can be found in https://github.com/dgraph-io/benchmarks/tree/master/cachebench/ristretto
Hit Ratios
Search
This trace is described as "disk read accesses initiated by a large commercial search engine in response to various web search requests."
Database
This trace is described as "a database server running at a commercial site running an ERP application on top of a commercial database."
Looping
This trace demonstrates a looping access pattern.
CODASYL
This trace is described as "references to a CODASYL database for a one hour period."
Throughput
All throughput benchmarks were ran on an Intel Core i7-8700K (3.7GHz) with 16gb of RAM.
Mixed
Read
Write
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK