Bagaimana untuk menangani ketidaksahihan cache Golang?

WBOY
Lepaskan: 2024-06-02 17:09:02
asal
630 orang telah melayarinya

Apabila berurusan dengan ketidaksahihan cache di Golang, anda boleh mengikuti strategi berikut: tandai item cache dengan cap masa dan dapatkan data baharu apabila ia tamat tempoh. Menggunakan kunci, cache dikunci apabila coroutine memperoleh item cache, dan cache dibuka dan data baharu diperoleh apabila item cache tidak wujud atau tamat tempoh.

如何处理 Golang 缓存失效的情况?

Bagaimana untuk menangani kegagalan cache Golang?

Apabila menggunakan cache dalam program Golang, adalah penting untuk menangani kegagalan cache untuk memastikan konsistensi dan kebolehpercayaan data. Berikut ialah dua strategi pemprosesan:

1. Gunakan cap masa

  • untuk mengaitkan item cache dengan cap masa.
  • Apabila item cache tamat tempoh, dapatkan data baharu dan kemas kini cache.
type CacheItem struct {
    Value interface{}
    Timestamp time.Time
}

var cache = make(map[string]CacheItem)

func SetCache(key string, value interface{}) {
    cache[key] = CacheItem{Value: value, Timestamp: time.Now()}
}

func GetCache(key string) (interface{}, bool) {
    item, ok := cache[key]
    if ok && time.Since(item.Timestamp) < time.Second*30 {
        return item.Value, true
    }
    return nil, false
}
Salin selepas log masuk

2. Gunakan kunci

  • Apabila coroutine memperoleh item cache, kunci cache.
  • Jika item cache tidak wujud atau telah tamat tempoh, buka kunci cache dan dapatkan data baharu.
var cache = sync.Map{}

func SetCache(key string, value interface{}) {
    cache.Store(key, value)
}

func GetCache(key string) (interface{}, bool) {
    if value, ok := cache.Load(key); ok {
        return value, true
    }

    lock := sync.Mutex{}
    lock.Lock()
    defer lock.Unlock()

    if value, ok := cache.Load(key); ok {
        return value, true
    }

    newValue, err := fetchNewValue(key)
    if err == nil {
        cache.Store(key, newValue)
    }

    return newValue, err == nil
}
Salin selepas log masuk

Kes Praktikal

Andaikan kami menggunakan cache dalam API RESTful untuk menyimpan butiran pengguna.

rreeee

Atas ialah kandungan terperinci Bagaimana untuk menangani ketidaksahihan cache Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan