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!
go bigcache
Commentami!