go 如果引入第三方内存缓存库的话,引入哪个好? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
PungentSauce
V2EX    Go 编程语言

go 如果引入第三方内存缓存库的话,引入哪个好?

  •  
  •   PungentSauce 135 天前 4442 次点击
    这是一个创建于 135 天前的主题,其中的信息可能已经有所发展或是发生改变。

    go 如果引入第三方内存缓存库的话,引入哪个好? 之前有用过,后来觉得有些使用场景比较小就改成 sync.map 了 ,现在用的场景有点多了。想要引入个质量高一点的第三方内存缓存库

    第 1 条附言    135 天前
    我这边希望缓存的是 value ,有的是查询缓存,不想缓存 string/[]byte , 目前 otto 感觉比 bigcache 慢,但是 bigcache 只能[]byte ,还是很纠结。
    40 条回复    2025-07-22 13:22:46 +08:00
    Ayanokouji
        2
    Ayanokouji  
       135 天前   2
    ripperdev
        3
    ripperdev  
       135 天前
    https://github.com/hashicorp/go-memdb 最近在用这个,consul 家出的
    cannotagreemore
        4
    cannotagreemore  
       135 天前
    我司大规模项目在用,自研 sdk 也集成了这个实现,设计和文档质量都还不错
    https://github.com/hypermodeinc/ristretto
    Reficul
        5
    Reficul  
       135 天前
    具体是啥场景呢?闭眼推一个

    https://github.com/google/btree
    lepig
        6
    lepig  
       135 天前/span>   12
    卧槽
    5 个回复,5 个库。OP 岂不是更加就纠结了
    leexsh31
        7
    leexsh31  
       135 天前
    anycache
    LinusWong
        8
    LinusWong  
       135 天前   2
    这就是 go 吗,太百花齐放了
    Verdure
        9
    Verdure  
       135 天前
    wkzq
        10
    wkzq  
       135 天前
    https://github.com/coocood/freecache
    目前公司在用这个
    Aug
        11
    Aug  
       135 天前
    选活跃的
    cooltechbs
        12
    cooltechbs  
       135 天前
    @LinusWong 碎片化哈哈哈
    me262
        13
    me262  
       135 天前
    楼上推荐的这些应用场景都不一样,用 ai 对比一下
    billbur
        14
    billbur  
       135 天前   2
    @lepig 笑死我了,这就是 go
    Rehtt
        15
    Rehtt  
       135 天前
    根据需求自己搓一个
    csfreshman
        16
    csfreshman  
       135 天前
    百花齐放百家争鸣
    dabaibai
        17
    dabaibai  
       135 天前
    直接来个性能对比图 让大家选
    beihanggmj
        18
    beihanggmj  
       135 天前
    @lepig #6
    ChunkitAu
        19
    ChunkitAu  
       135 天前
    go-cache +1 使用也简单,当然看你项目规模,规模小 go-cache 足够使用了
    craftsmanship
        20
    craftsmanship  
       135 天前 via Android
    Mode Python 笑而不语
    PungentSauce
        21
    PungentSauce  
    OP
       135 天前
    我忘记之前用过 go-cache 还是 big-cache 了。 性能和功能性两方面吧。好多第三方 cache 不支持按照 key 进行过期设置就比较麻烦。
    me221
        22
    me221  
       135 天前
    让我惊讶的是几个库的更新时间已经是几年前了?

    go-cache: 6 years ago
    btree: 11 months ago

    Go 的兼容性这么好嘛
    chimission
        23
    chimission  
       135 天前   1
    @me221 go1.x 的更新开发者保证都是向后兼容的, 但是不保证以后得 go2
    chimission
        24
    chimission  
       135 天前
    我以前也是用的 go-cache 简单够用, 唯一不足就是不更新了,不过这个库做内存缓存也够了,更新不更新无所谓
    matrix1010
        25
    matrix1010  
       135 天前   2
    @cannotagreemore 你司要不要考虑换一换?建议看看 https://news.ycombinator.com/item?id=44414630 。作为 Theine 的作者我向你推荐 otter
    nanrenlei
        26
    nanrenlei  
       135 天前
    wnanbei
        27
    wnanbei  
       135 天前
    @chimission 已经没有 Go2 咯,只会有 1.xxx
    noyidoit
        28
    noyidoit  
       135 天前
    go-cache+1 ,简单够用
    looplj
        29
    looplj  
       135 天前
    @matrix1010 #25 v2 大佬真多,我在用 theine ,还提过 issue 来着
    StarUDream
        30
    StarUDream  
       135 天前
    https://github.com/eko/gocache

    话说还有没有类似这样的库,上层统一接口,下层可以使用 redis menory 这样的
    wervserwe
        31
    wervserwe  
       135 天前
    自己根据需求写个
    spiritfelix
        33
    spiritfelix  
       134 天前
    看需求吧,我甚至用了 SQLite 做本地数据存储,目的是有些数据,关闭应用继续保留,开启应用继续使用,哦,忘了说,Wails 桌面端应用
    qloog
        34
    qloog  
       132 天前
    https://github.com/hypermodeinc/ristretto 这个就很不错,各方面指标都很不错

    ristretto 详细对比: https://hypermode.com/blog/introducing-ristretto-high-perf-go-cache 里面也提到了关于性能提升的一些关键点和参考,也有一些性能对比的参考图

    作为 local cache 使用的案例: https://github.com/go-eagle/eagle/blob/master/pkg/cache/memory.go
    qloog
        35
    qloog  
       132 天前
    @Ayanokouji 看到 grafana 也在使用 otter
    assiadamo
        37
    assiadamo  
       131 天前
    @ripperdev 想找个 go 对 leveldb/rocksdb 的封装,支持事务的,软件事务内存
    815979670
        38
    815979670  
       131 天前
    我再补一个 GORM+SQLite 驱动+内存库,我们项目中时这样用的,启动时加载数据,然后可以通过 SQL 语句 汇总、查询过滤。(我们是定时统计数据 维度较多 选了这个方案)
    gongym
        39
    gongym  
       130 天前
    我记得我之前也做过选型,后来选了 redis
    pmx1990
        40
    pmx1990  
       130 天前
    @ripperdev +1024 4 年前已经用于生产了 自己用范型 封装下 很好用
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2573 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 15:04 PVG 23:04 LAX 07:04 JFK 10:04
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86