1. 程式人生 > >golang cache--go-cache

golang cache--go-cache

fun 除了 舉例 lang git spring import 執行 .get

go-cache是一款類似於memached 的key/value 緩存軟件。它比較適用於單機執行的應用程序。
go-cache實質上就是擁有過期時間並且線程安全的map,可以被多個goroutine安全訪問。

下面舉例說明其用法。

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中。

參考

go-cache

golang cache--go-cache