Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Aplikasi praktikal teknologi caching dan penjadualan tugas di Golang.

Aplikasi praktikal teknologi caching dan penjadualan tugas di Golang.

王林
王林asal
2023-06-21 13:44:391616semak imbas

Aplikasi praktikal teknologi caching dan penjadualan tugas di Golang

Sejak penubuhannya pada tahun 2009, bahasa Golang telah menjadi bahasa pengaturcaraan yang biasa digunakan dalam bidang seperti pengkomputeran awan, data besar dan rantaian blok. Antaranya, mekanisme pengumpulan tinggi, coroutine dan sampah sarap bahasa Golang dianggap sebagai kelebihannya yang unik.

Dalam aplikasi praktikal, teknologi caching dan penjadualan tugas adalah cara teknikal yang biasa digunakan. Artikel ini akan memperkenalkan aplikasi praktikal teknologi caching dan penjadualan tugas dalam bahasa Golang.

  1. Teknologi caching

Teknologi caching merujuk kepada menyimpan data yang biasa digunakan dalam ingatan untuk mengurangkan kekerapan operasi I/O sistem dan dengan itu meningkatkan kelajuan tindak balas sistem. Bahasa Golang disertakan dengan penyegerakan perpustakaan cache memori. Peta.

sync.Map ialah struktur storan nilai kunci selamat serentak yang tidak akan menyebabkan keadaan perlumbaan apabila berbilang coroutine serentak membaca dan menulis. Reka bentuknya agak bijak dan boleh meningkatkan kecekapan akses serentak dengan berkesan.

Berikut ialah pelaksanaan cache mudah:

package main

import (
    "fmt"
    "sync"
    "time"
)

type cache struct {
    sync.Map
}

func main() {
    c := &cache{}
    
    c.SetCache("key1", "value1", 3*time.Second) //3秒后过期
    fmt.Println(c.GetCache("key1")) //value1
    
    time.Sleep(2*time.Second)
    fmt.Println(c.GetCache("key1")) //value1
    
    time.Sleep(2*time.Second)
    fmt.Println(c.GetCache("key1")) //nil
}

func (c *cache) SetCache(key string, value interface{}, ttl time.Duration) {
    c.Store(key, &item{
        CreateAt: time.Now(),
        ExpireAt: time.Now().Add(ttl),
        Value:    value,
    })
}

func (c *cache) GetCache(key string) interface{} {
    if v, ok := c.Load(key); ok {
        item := v.(*item)
        if item.ExpireAt.Before(time.Now()) {
            c.Delete(key)
            return nil
        }
        return item.Value
    }
    return nil
}

type item struct {
    CreateAt time.Time
    ExpireAt time.Time
    Value    interface{}
}

Dalam kod di atas, pasangan nilai kunci cache disimpan dalam bentuk struktur item, di mana CreateAt mewakili masa apabila data cache telah dicipta, dan ExpireAt mewakili cache Masa tamat tempoh data, Nilai mewakili kandungan khusus cache. Apabila masa tamat tempoh dicapai, cache akan dipadamkan.

  1. Penjadualan Tugas

Penjadualan tugas merujuk kepada penugasan tugas kepada coroutine yang berbeza untuk dilaksanakan mengikut peraturan tertentu, selang masa atau peraturan pencetus peristiwa. Bahasa Golang menyediakan penjadualan berjadual dan fungsi pembatalan tugas melalui pakej masa dan pakej konteks.

Berikut ialah pelaksanaan penjadualan tugas yang mudah:

package main

import (
    "context"
    "fmt"
    "time"
)

func main() {
    ctx, cancel := context.WithCancel(context.Background())
    go schedule(ctx)

    time.Sleep(10 * time.Second)
    cancel()
}

func schedule(ctx context.Context) {
    ticker := time.NewTicker(1 * time.Second)
    defer ticker.Stop()

    for {
        select {
        case <-ticker.C:
            fmt.Println("execute some job")
        case <-ctx.Done():
            fmt.Println("cancel all jobs")
            return
        }
    }
}

Dalam kod di atas, pemasa melaksanakan tugas sekali setiap saat Apabila cancel() dipanggil, tugas itu akan dibatalkan. Dalam aplikasi praktikal, ia boleh diselaraskan mengikut keperluan khusus.

  1. Kesimpulan

Artikel ini memperkenalkan aplikasi praktikal teknologi caching dan penjadualan tugas dalam bahasa Golang, yang boleh meningkatkan kelajuan tindak balas dan kecekapan pengendalian sistem dengan berkesan. Dalam aplikasi praktikal, ia juga boleh digabungkan dengan pengaturcaraan rangkaian, operasi pangkalan data dan cara teknikal lain untuk membina sistem teragih berprestasi tinggi.

Atas ialah kandungan terperinci Aplikasi praktikal teknologi caching dan penjadualan tugas di Golang.. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn