Go 语言的缓存库 FreeCache
特性:
- 可存储数以百万计条目
- 零垃圾收集负荷
- 高并发而且线程安全的访问
- 纯 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 个。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。