Dengan kemunculan Internet dan era data besar, algoritma pengesyoran memainkan peranan yang semakin penting dalam e-dagang, rangkaian sosial dan bidang lain. Sebagai bahasa pengaturcaraan berprestasi tinggi dan sangat sesuai, Golang juga digunakan secara meluas oleh semakin banyak perusahaan. Artikel ini akan memperkenalkan cara melaksanakan mekanisme caching algoritma pengesyoran yang cekap di Golang untuk meningkatkan prestasi dan kecekapan algoritma.
2.1 Pasang golang-cache
Buka terminal dalam GoLand dan masukkan arahan berikut untuk memasang modul golang-cache.
go get github.com/eko/gocache
2.2 Mulakan cache
Gunakan kod berikut untuk mencipta cache dalam memori bernama "mycache".
import ( "github.com/eko/gocache/cache" "github.com/eko/gocache/store/memory" "time" ) // 创建内存缓存 memcached := store.NewMemory(nil) // 新建缓存对象 mycache := cache.New(memcached)
2.3 Caching data
Gunakan kod berikut untuk cache pasangan nilai kunci ke dalam "mycache".
// 设置cachename为"hello"的值 mycache.Set("hello", "world", cache.DefaultExpiration)
2.4 Dapatkan data cache
Gunakan kod berikut untuk mendapatkan nilai cache dengan nilai kunci "hello" daripada "mycache".
result, found := mycache.Get("hello") if found { fmt.Println("Value of hello is", result) } else { fmt.Println("Key not found") }
2.5 Tetapkan masa cache
Gunakan kod di bawah untuk menetapkan masa tamat tempoh tersuai (10s).
mycache.Set("greet", "Hello! How are you today?", 10*time.Second)
2.6 Bersihkan cache
Gunakan kod di bawah untuk membersihkan semua data dalam "mycache".
mycache.Clear()
2.7 Tetapkan strategi penyingkiran
golang-cache menyokong berbilang strategi penyingkiran, seperti LFU (algoritma penyingkiran paling kurang digunakan), LRU (algoritma penyingkiran paling kurang digunakan baru-baru ini) dan sebagainya. Berikut ialah cara menggunakan algoritma penghapusan LRU.
memcached, err := memory.New(memory.Config{ MaxSize: 1000000, // Maximum number of items in the cache (default: 1000) ItemDefaultExpiration: 5 * time.Minute, // Default expiration duration of items in the cache (default: 0, no expiration) ItemsToPrune: 10, // Number of items to prune when the cache reaches its maximum size (default: 0) metricsEnabled: true, // Enable Prometheus metrics (default: false) metricsPrefix: "cache", // Metric prefix (default: "cache") storeByReference: false, // Store items by reference instead of copying their value (default: false) purgeExpired: true, // Allow purge operation to clear expired items (default: true) }) if err != nil { log.Fatal(err) } cache := cache.New(memcached, cache.ReplaceAlgorithm(cache.LRU), cache.AboutToExpire(aboutToDelete), )
Atas ialah kandungan terperinci Mekanisme caching untuk melaksanakan algoritma pengesyoran yang cekap di Golang.. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!