71

GitHub - dgraph-io/ristretto: A high performance memory-bound Go cache

 4 years ago
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

GoDoc Go Report Card

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK