首頁 >後端開發 >Golang >golang-cache是​​全域嗎

golang-cache是​​全域嗎

(*-*)浩
(*-*)浩原創
2019-12-13 11:37:513809瀏覽

golang-cache是​​全域嗎

go-cache 是基於記憶體的、高速的,儲存k-v格式的快取工具。它適用於運行在單一機器上的應用程序,可以儲存任何資料類型的值,並且可以被多個goroutine安全地使用。                      (建議學習:go

雖然go-cache 不打算用作持久資料存儲,但是整個快取資料可儲存至檔案(或任何io.Reader/Writer )中,並且能快速從中指定資料來源加載,快速恢復狀態。

Demo

package main

import (
        "log"
        "time"

        "github.com/patrickmn/go-cache"
)


func main(){

        c := cache.New(30*time.Second, 10*time.Second)


        c.Set("Title", "Spring Festival", cache.DefaultExpiration)


        value, found := c.Get("Title")
        if found {
                log.Println("found:", value)
        } else {
                log.Println("not found")
        }


        time.Sleep(60*time.Second)
        log.Println("sleep 60s...")
        value, found = c.Get("Title")
        if found {
                log.Println("found:", value)
        } else {
                log.Println("not found")
        }

}

output

2019/02/05 17:49:32 found: Spring Festival
2019/02/05 17:50:32 sleep 60s…
2019/02/05 17:50:32 not found

首先,建立一個新的cache,其中的key過期時間是30s,並且每10s清除快取中的過期key。

定期清除快取中的過期key,是透過一個常駐goroutine來實現的。

接著,設定一個key/value,及其過期時間。過期時間使用預設過期時間,即30s。

取得這個key,可以看到,此時這個key在cache中是存在的。

睡眠60s,使剛才設定的key過期。

再次取得這個key,此時key已經過期,被清除了,不在cache

以上是golang-cache是​​全域嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn