Go語言中兩個比較流行的緩存庫使用示例
前言
在 Go 中實現(xiàn)帶有過期時間的緩存通常需要一個可以自動處理鍵值過期的緩存系統(tǒng)。雖然標(biāo)準(zhǔn)庫中沒有直接提供這種功能,但有幾個流行的第三方庫可以很好地滿足這一需求。下面我會介紹兩個比較流行的 Go 緩存庫:go-cache 和 bigcache。
1. go-cache
go-cache 是一個內(nèi)存中的鍵值對緩存庫,支持可過期條目。它是一個線程安全的緩存庫,可以設(shè)定每個緩存項的生存時間(TTL)。
安裝 go-cache:
go get github.com/patrickmn/go-cache
使用示例:
package main import ( "fmt" "github.com/patrickmn/go-cache" "time" ) func main() { // 創(chuàng)建一個緩存,設(shè)置默認(rèn)過期時間為 5 分鐘,每 10 分鐘清理過期項目 c := cache.New(5*time.Minute, 10*time.Minute) // 設(shè)置一個鍵值,過期時間為 1 分鐘 c.Set("key1", "value1", 1*time.Minute) // 從緩存中獲取鍵值 val, found := c.Get("key1") if found { fmt.Println("key1:", val) } // 等待超過 1 分鐘后再次嘗試獲取 time.Sleep(70 * time.Second) val, found = c.Get("key1") if found { fmt.Println("key1 still:", val) } else { fmt.Println("key1 has expired") } }
在這個示例中,我們創(chuàng)建了一個 go-cache 實例,并添加了一個鍵值對,設(shè)置了 1 分鐘的過期時間。通過 Set 和 Get 方法可以輕松地添加和檢索緩存項。
2. bigcache
bigcache 是一個高效的鍵值緩存,專為單機環(huán)境優(yōu)化。它不自帶過期處理,但可以配置以在設(shè)置時啟用。
安裝 bigcache:
go get github.com/allegro/bigcache
使用示例:
package main import ( "fmt" "github.com/allegro/bigcache" "time" ) func main() { config := bigcache.DefaultConfig(10 * time.Minute) config.CleanWindow = 5 * time.Minute // 創(chuàng)建一個緩存 cache, err := bigcache.NewBigCache(config) if err != nil { panic(err) } // 添加鍵值 cache.Set("key1", []byte("value1")) // 獲取鍵值 entry, err := cache.Get("key1") if err != nil { fmt.Println("Error retrieving key1:", err) } else { fmt.Println("key1:", string(entry)) } // 模擬時間推移 time.Sleep(15 * time.Minute) _, err = cache.Get("key1") if err != nil { fmt.Println("key1 has expired") } }
bigcache
更適合處理大量數(shù)據(jù)和高負(fù)載情況,但其配置和使用相對復(fù)雜一些。
這兩個庫都能在 Go 中實現(xiàn)帶有過期時間的緩存,選擇哪一個取決于你的具體需求和應(yīng)用場景。
總結(jié)
到此這篇關(guān)于Go語言中兩個比較流行的緩存庫使用的文章就介紹到這了,更多相關(guān)Go語言緩存庫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
golang結(jié)合mysql設(shè)置最大連接數(shù)和最大空閑連接數(shù)
本文介紹golang?中連接MySQL時,如何設(shè)置最大連接數(shù)和最大空閑連接數(shù),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-02-02Go用兩個協(xié)程交替打印100以內(nèi)的奇偶數(shù)的方法詳解
這篇文章主要給大家詳細(xì)介紹了Go用兩個協(xié)程交替打印100以內(nèi)的奇偶數(shù)的示例代碼,文中給大家介紹了兩個實現(xiàn)方法,使用無緩沖的channel和設(shè)置GOMAXPROCS=1,介紹的非常詳細(xì),需要的朋友可以參考下2023-08-08Go語言實現(xiàn)冒泡排序、選擇排序、快速排序及插入排序的方法
這篇文章主要介紹了Go語言實現(xiàn)冒泡排序、選擇排序、快速排序及插入排序的方法,以實例形式詳細(xì)分析了幾種常見的排序技巧與實現(xiàn)方法,非常具有實用價值,需要的朋友可以參考下2015-02-02golang項目如何上線部署到Linu服務(wù)器(方法詳解)
這篇文章主要介紹了golang項目如何上線部署到Linu服務(wù)器,本文通過兩種方法給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-10