面向 Go 的高性能并发内存缓存,可存储海量条目且降低 GC 开销。
8173620GoApache-2.0更新于 12天前
一个面向 Go 的高性能、并发安全的内存缓存库,支持按成本淘汰。
Ristretto 是一个用 Go 编写的内存缓存库,专为多个 goroutine 同时读写缓存、锁竞争容易成为瓶颈的场景设计。它最初是为 Dgraph 内部实现无竞争缓存而开发的。
淘汰策略采用 SampledLFU,准入策略采用 TinyLFU,目标是在占用很少内存(每个频率计数器约 12 bit)的同时保持较高的命中率。每个条目都可以指定自定义成本,因此一个价值较高的大条目可以淘汰多个小条目。缓存容量按总成本而非条目数量进行限制。
接口简洁:配置 NumCounters、MaxCost 和 BufferItems 后,即可使用 Set、Get 和 Del 操作缓存。可选的指标功能可统计吞吐量和命中率等数据。Ristretto 是单进程库,不提供分布式能力。需要 Go 1.21 或更高版本,v2 版本基于泛型实现。
安装 Go 1.21 或更高版本
在项目中使用 go get 安装 Ristretto
go get github.com/dgraph-io/ristretto/v2概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
面向 Go 的高性能并发内存缓存,可存储海量条目且降低 GC 开销。
Go 语言工具函数库,提供 700 多个可复用函数,覆盖字符串、切片、时间、网络、加密等场景。
内存数据存储,可用作缓存、数据结构服务器、文档数据库、向量数据库和消息代理。
与 Redis 和 Memcached API 兼容的内存数据存储,可直接替换两者使用。
用 Rust 编写的多线程内存键值数据库,兼容 Redis 与 Valkey 协议,内置全文与向量搜索。
Node.js 工作线程池,把计算密集型任务转移到子线程执行,避免阻塞主事件循环。