分享一个轻量级的内存 KV 缓存库, 基于 hashmap 和 heap 实现
介绍
轻量级的内存 KV 存储, 由哈希图和最小堆实现, 没有特别为 GC 做优化. 拥有 O(1)的读取效率, O(logN)的写入效率. 缓存淘汰策略: 检测到过期或者容量溢出时, 堆顶元素会被清除一部分, 每次至多删除 16*1000(默认值, 后面省略)个 key, 30s 检查一次.
简单压测
go test -benchmem -run=^$ -bench . github.com/lxzan/memorycache/benchmark
goos: darwin
goarch: arm64
pkg: github.com/lxzan/memorycache/benchmark
BenchmarkSet/10000-8 13830640 87.25 ns/op 0 B/op 0 allocs/op
BenchmarkSet/1000000-8 3615801 326.6 ns/op 58 B/op 0 allocs/op
BenchmarkGet/10000-8 14347058 82.28 ns/op 0 B/op 0 allocs/op
BenchmarkGet/1000000-8 3899768 262.6 ns/op 54 B/op 0 allocs/op
PASS
ok github.com/lxzan/memorycache/benchmark 13.037s