go-zero 的 Redis 竟然只支持 0 库…… - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
uiosun
V2EX    Go 编程语言

go-zero 的 Redis 竟然只支持 0 库……

  •  
  •   uiosun 2023-03-16 19:43:09 +08:00 5854 次点击
    这是一个创建于 943 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我们是微服务架构,但业务比较小,单机 Redis 少许扩容就撑住了,现在有新独立业务就想切个缓存库,发现只支持 0 库。

    看了一些 issue ,社区主导者认为这会增加运维工作量,干脆不支持这个功能。

    业务已经开始写了一个月,现在切换估计不是很来得及。似乎只能 fork 一份自己改改?


    最后吐个槽:

    不是很理解这种:可以明明可以基于开发规范进行约束的问题,却直接干脆的放弃功能的设计思路。

    选 go-zero 的时候,是被宣称“大而全”的微服务框架吸引了,突发奇想了一个词:高大壮汉穿小鞋……

    第 1 条附言    2023-03-17 10:09:23 +08:00

    已经在大佬们的指点下,理解了 0 库的用途了,的确是之前没有这方面的研究,技能点缺失。

    再次感谢大家!

    27 条回复    2024-04-17 17:32:11 +08:00
    ecric
        1
    ecric  
       2023-03-16 19:49:16 +08:00
    我最近也在看这个框架
    xiaoshouchen
        2
    xiaoshouchen  
       2023-03-16 19:53:52 +08:00
    只能使用 0 库难道不是很基础的规范嘛?
    hzzhzzdogee
        3
    hzzhzzdogee  
       2023-03-16 20:04:09 +08:00
    0 库是什么意思, 求指教
    so1n
        4
    so1n  
       2023-03-16 20:06:22 +08:00
    感觉这个库宣传比开发更用心...
    whatiam
        5
    whatiam  
       2023-03-16 20:07:13 +08:00
    我认为只用 0 库是更科学的做法。如果有不同的业务,应该用前缀区分。只用 0 库最大的好处就是以后做 redis 集群的时候,不用改动这部分的代码了。
    lshero
        6
    lshero  
       2023-03-16 20:09:42 +08:00
    @hzzhzzdogee redis 的 select 切换的那个
    hljjhb
        7
    hljjhb  
       2023-03-16 20:42:51 +08:00   1
    Redis Cluster 竟然支持 0 库……

    ByteCat
        8
    ByteCat  
       2023-03-16 20:46:55 +08:00
    很正常,只有单机的有 0-15 ,集群只有 0 库了,业务用不用 key 区分啦
    rekulas
        9
    rekulas  
       2023-03-16 21:38:41 +08:00
    我也感觉这不是特别必要的,用库来区分业务似乎不合理,不然你们 50 个微服务那不是得部署几套 redis
    uiosun
        10
    uiosun  
    OP
       2023-03-16 22:39:27 +08:00
    @xiaoshouchen @whatiam @ByteCat @rekulas

    原来集群时 0 库是规范,学到了

    ---

    那 Redis 推出多个库这个功能的意义在哪儿?之前都是 A 业务放 0 、B 业务放 1 、以此类推...,这样干净整洁

    有大佬再指点一下吗,有点迷惑
    uiosun
        11
    uiosun  
    OP
       2023-03-16 22:40:15 +08:00
    @hljjhb 这不是小业务,没上集群吗,大佬莫笑
    hljjhb
        12
    hljjhb  
       2023-03-16 23:04:03 +08:00   1
    @uiosun 也不算规范吧,只是没太大必要,况且官方也不推荐用于区分不同产品

    In practical terms, Redis databases should be used to separate different keys belonging to the same application (if needed), and not to use a single Redis instance for multiple unrelated applications.
    crysislinux
        13
    crysislinux  
       2023-03-16 23:07:15 +08:00 via Android   1
    @uiosun redis 作者说了这设计是一个错误。
    kawowa
        14
    kawowa  
       2023-03-17 02:08:25 +08:00 via iPhone
    本来想提醒一下用了哨兵就只能用 0 库了,看到楼上已经说了。
    想区分系统或者键的话,用前缀和固定的匹配规则就好。
    swulling
        15
    swulling  
       2023-03-17 06:37:56 +08:00 via iPhone
    @uiosun 集群版本不能指定 db

    但是我不同意 db 无意义。虽然是设计失误,但是既然有这个功能,下游还是得开放配置。

    go-zero 就是被国内开发环境吊打的太少,老板或者客户说,你的 db 就是 3 ,要么搞定要么滚蛋。你怎么办?
    yibin001
        16
    yibin001  
       2023-03-17 06:56:17 +08:00
    自己改一下就好了啊,我这边用 go-zero 快 2 年了


    ```
    type RedisConf struct {
    cache.NodeConf
    PoolSize int `json:"PoolSize ,default=500 ,optional"`
    Db int `json:"Db, default=0,optional"`
    }


    ......

    //redis/v8 里是能支持指定不同 DB 的。
    client := redis.NewClient(&redis.Options{
    Addr: c.CacheRedis[0].Host,
    Password: c.CacheRedis[0].Pass,
    PoolSize: c.CacheRedis[0].PoolSize,
    DB: c.CacheRedis[0].Db,
    })

    ```
    tairan2006
        17
    tairan2006  
       2023-03-17 07:41:54 +08:00 via Android
    多库无用,不同服务的 key 前缀区分开就行
    Rehtt
        18
    Rehtt  
       2023-03-17 08:30:15 +08:00 via Android
    go-zero zero
    tramm
        19
    tramm  
       2023-03-17 08:30:37 +08:00
    这么多人都用 0 库的嘛.
    看来我是异类了, 我就喜欢不同项目不同的库...
    bthulu
        20
    bthulu  
       2023-03-17 08:30:44 +08:00
    多库当然是有用的. 只是 redis 集群搞不定这个事情, 迫不得已降级到仅支持 0 库.
    sujin190
        21
    sujin190  
       2023-03-17 08:54:10 +08:00 via Android
    如果 redis 当做数据库而不是缓存那么分库其实就比分 key 好,缓存的话还是分 key 更好,redis cluster 本来就已经定位于缓存集群了吧
    JKeita
        22
    JKeita  
       2023-03-17 08:57:21 +08:00
    使用 0 库很正常吧,自己搞集群或多实例呗
    8355
        23
    8355  
       2023-03-17 09:14:56 +08:00
    @uiosun #11 没上集群也应该高可用啊...
    RangerWolf
        24
    RangerWolf  
       2023-03-17 09:45:28 +08:00
    震惊了。。。 居然只能 0 库
    dif
        25
    dif  
       2023-03-17 10:14:05 +08:00
    一直用 0 库,不同业务用 key:subkey:... 去区分了,当然,也要限制一些命令的执行。
    主要是不管多小的业务,上来就是一套 redis-cluster ,省的后面麻烦了。看业务要求,我们这算是打印个 hello world ,你也要做成高可用的。
    lotusgrm
        26
    lotusgrm  
       2023-07-26 23:46:30 +08:00
    我觉得之所以 redis 集群的时候默认只支持 0 库,更多是为了简化集群管理,redis 集群中的所有节点共享相同配置,包含集群 redis 实例使用的数据库编号,通过把所有节点都配置成使用 0 号数据库,可以简化集群的管理和维护工作
    studentht
        27
    studentht  
       2024-04-17 17:32:11 +08:00
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     978 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 22:27 PVG 06:27 LAX 15:27 JFK 18:27
    Do have faith in what you're doing.
    ubao 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