FreeCache是一个Go语言的缓存库,无额外的GC负荷。数百万对象的垃圾收集延迟仅在数百毫秒。
特性:
可存储数以百万计条目
零垃圾收集负荷
高并发而且线程安全的访问
纯Go语言实现
支持对象失效
近乎LRU的算法
严格限制内存使用
提供一个测试用的服务器,支持一些基本Redis命令
示例代码:
cacheSize := 1024*1024cache := freecache.NewCache(cacheSize)key := []byte("abc")val := []byte("def")expire := 60 // expire in 60 secondscache.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())注意事项:
推荐使用Go1.4版本
内存是预先分配的
如果你分配的内存非常大,那么应该设置debug.SetGCPercent()到一个很小的比例来获得正常的GC频率
FreeCache通过减少指针的数量来避免GC符合,不管对象有多少,指针最多512个。
评论