背景
ristretto
是 dgraph
团队开源的一款高性能内存缓存库,旨在解决高并发场景下的缓存性能和吞吐瓶颈。dgraph
专攻的方向是高性能图数据库,ristretto
就是其图数据库和 KV 数据库产品的核心依赖。
与 golang 社区常见的其他单进程内存缓存类库(groupcache
,bigcache
,fastcache
等)相比,ristretto
在缓存命中率和读写吞吐率上的综合表现更优。
ristretto 简介
ristretto
主要有以下优点:
高命中率 - 特殊设计的录入/驱逐政策
-
驱逐(SampledLFU):与精确 LRU 相当,但在搜索和数据跟踪上有更好的性能
录入(TinyLFU):以极小的内存开销获取额外的性能提升
高吞吐率
权重感知的驱逐策略 - 价值权重大的条目可以驱逐多个价值权重小的条目
-
依托权重可以扩展出缓存最大内存占用、缓存最多条目数等场景
完全并发支持
性能指标 - 吞吐量、命中率及其他统计数据的性能指标
用户友好的 API 设计
-
支持指定缓存失效时间</