Go 語言的緩存庫:FreeCache

n6bg 9年前發布 | 38K 次閱讀 FreeCache Google Go/Golang開發

FreeCache 是一個 Go 語言的緩存庫,無額外的 GC 負荷。數百萬對象的垃圾收集延遲僅在數百毫秒。

特性:

  • 可存儲數以百萬計條目

  • 零垃圾收集負荷

  • 高并發而且線程安全的訪問

  • 純 Go 語言實現

  • 支持對象失效

  • 近乎 LRU 的算法

  • 嚴格限制內存使用

  • 提供一個測試用的服務器,支持一些基本 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())

注意事項:

  • 推薦使用 Go 1.4 版本

  • 內存是預先分配的

  • 如果你分配的內存非常大,那么應該設置debug.SetGCPercent()到一個很小的比例來獲得正常的 GC 頻率


FreeCache 通過減少指針的數量來避免 GC 符合,不管對象有多少,指針最多 512 個。

項目主頁:http://www.baiduhome.net/lib/view/home/1430355489912

 本文由用戶 n6bg 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!