FreeCacheGo 語言的緩存庫
FreeCache 是一個(gè) Go 語言的緩存庫,無額外的 GC 負(fù)荷。數(shù)百萬對象的垃圾收集延遲僅在數(shù)百毫秒。
特性:
可存儲數(shù)以百萬計(jì)條目
零垃圾收集負(fù)荷
高并發(fā)而且線程安全的訪問
純 Go 語言實(shí)現(xiàn)
支持對象失效
近乎 LRU 的算法
嚴(yán)格限制內(nèi)存使用
提供一個(gè)測試用的服務(wù)器,支持一些基本 Redis 命令
示例代碼:
cacheSize := 1024*1024
cache := freecache.NewCache(cacheSize)
key := []byte("abc")
val := []byte("def")
expire := 60 // expire in 60 seconds
cache.Set(key, val, expire)
got, err := cache.Get(key)
if err != nil {
fmt.Println(err)
} else {
fmt.Println(string(got))
}
affected := cache.Del(key)
fmt.Println("deleted key ", affected)
fmt.Println("entry count ", cache.EntryCount())
注意事項(xiàng):
推薦使用 Go 1.4 版本
內(nèi)存是預(yù)先分配的
-
如果你分配的內(nèi)存非常大,那么應(yīng)該設(shè)置
debug.SetGCPercent()到一個(gè)很小的比例來獲得正常的 GC 頻率
FreeCache 通過減少指針的數(shù)量來避免 GC 符合,不管對象有多少,指針最多 512 個(gè)。
評論
圖片
表情
