go-cache无法清除cache.什么cache可以
2026/6/12 6:28:53 网站建设 项目流程

推荐替代方案

1.TwiN/gocache— 最推荐,API 最直观

支持Clear()一键清空、DeleteAll()批量删除,还有DeleteKeysByPattern()按模式删除。

go

import "github.com/TwiN/gocache/v2" cache := gocache.NewCache().WithMaxSize(10000).WithEvictionPolicy(gocache.LeastRecentlyUsed) cache.StartJanitor() // 启动后台自动清理过期项 cache.Set("key", "value") cache.Clear() // ✅ 一键清空 cache.Delete("key") // ✅ 删除单个

2.maypok86/otter— 2025 年高性能首选

Go 缓存库的新标杆,自适应 W-TinyLFU 淘汰策略,支持 TTL 自动过期,性能远超 Ristretto。

go

import "github.com/maypok86/otter" cache, _ := otter.MustBuilder[string, string](1000). WithTTL(time.Hour). Build() cache.Set("key", "value") cache.Delete("key") // ✅ 删除 // 支持自动过期,无需手动清理

3.allegro/bigcache— 大数据量场景

适合存储 GB 级数据,但不支持 TTL 自动过期,只能手动清除。

4.orca-zhang/ecache— 极简轻量

代码不到 300 行,30 秒接入,支持 LRU/LRU-2,有Delete()方法。

go

c := ecache.NewLRUCache(16, 200, 10*time.Second) c.Put("key", value) c.Del("key") // ✅ 删除

5.dgraph-io/ristretto— 经典高性能

老牌高性能缓存,支持 TTL 和Del(),但 API 相对底层。


快速对比

表格

自动清除过期项手动清空性能适用场景
patrickmn/go-cache❌ 需手动DeleteExpired()❌ 无Clear()一般简单场景
TwiN/gocache✅ Janitor 后台清理Clear()良好通用首选
otter✅ 自动 TTLDelete()极高高性能首选
bigcache❌ 手动需遍历GB 级大数据
ecache✅ TTLDel()极简快速接入

建议

  • 如果你只是想要一个功能完善、API 直观的替代:TwiN/gocache是最佳选择,直接替换 go-cache 即可。

  • 如果你追求极致性能(高并发、低延迟):选otter(Go 版 Caffeine)。

两者都解决了 go-cache 无法自动清除和无法一键清空的核心痛点。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询