Caching in Go con BigCache

Mattepuffo's logo
Caching in Go con BigCache

Caching in Go con BigCache

BigCache è una libreria per Go per il caching, consigliata in caso di mole di dati considerevole.

Non ho fatto molti test in questo senso, ma leggendo in giro mi sembra di aver capito che le prestazioni rispetto ai concorrenti siano migliori solo nel caso di molti dati.

In caso contrario non è necessario usarla.

Detto ciò vediamo il codice:

package main

import (
	"context"
	"fmt"
	"time"

	"github.com/allegro/bigcache/v3"
)

func main() {
	config := bigcache.Config{
		Shards:             2048,
		LifeWindow:         13 * time.Minute,
		CleanWindow:        13 * time.Minute,
		MaxEntriesInWindow: 1000 * 10 * 60,
		MaxEntrySize:       1000,
		Verbose:            true,
		HardMaxCacheSize:   8192,
		OnRemove:           nil,
		OnRemoveWithReason: nil,
	}

	cache, err := bigcache.New(context.Background(), config)
	if err != nil {
		fmt.Println(err)
		return
	}

	cache.Set("key1", []byte("val1"))

	key1, err := cache.Get("key1")
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println(string(key1))

	key2, err := cache.Get("key2")
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println(string(key2))
}

Ho usato una configurazione custom giusto per provare un pò di parametri.

Prima di avviare il programma dovete dare questo comando:

go mod tidy

Enjoy!


Condividi

Commentami!