FreeCache Go 语言的缓存库 FreeCache

xuanbao2015-04-29 16:00:00 • 5445 次点击    
这是一个分享于 2015-04-29 16:00:00 的项目,其中的信息可能已经有所发展或是发生改变。

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

A cache library for Go with zero GC overhead.Read More

Latest commit to the master branch on 4-12-2024
Download as zip
授权协议:
MIT
开发语言:
Google Go 查看源码»
操作系统:
跨平台
5445 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传