Golang Go语言中 go-zero 的 Redis 仅支持 0 库……

发布于 1周前 作者 yuanlaile 来自 Go语言

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

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

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


最后吐个槽:

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

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


Golang Go语言中 go-zero 的 Redis 仅支持 0 库……

更多关于Golang Go语言中 go-zero 的 Redis 仅支持 0 库……的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html

28 回复

我最近也在看这个框架

更多关于Golang Go语言中 go-zero 的 Redis 仅支持 0 库……的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


只能使用 0 库难道不是很基础的规范嘛?

0 库是什么意思, 求指教

感觉这个库宣传比开发更用心…

我认为只用 0 库是更科学的做法。如果有不同的业务,应该用前缀区分。只用 0 库最大的好处就是以后做 redis 集群的时候,不用改动这部分的代码了。

redis 的 select 切换的那个

⌈Redis Cluster 竟然支持 0 库……⌋

🤣

很正常,只有单机的有 0-15 ,集群只有 0 库了,业务用不用 key 区分啦

我也感觉这不是特别必要的,用库来区分业务似乎不合理,不然你们 50 个微服务那不是得部署几套 redis



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



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

有大佬再指点一下吗,有点迷惑

🤣这不是小业务,没上集群吗,大佬莫笑

也不算规范吧,只是没太大必要,况且官方也不推荐用于区分不同产品

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.

redis 作者说了这设计是一个错误。

本来想提醒一下用了哨兵就只能用 0 库了,看到楼上已经说了。
想区分系统或者键的话,用前缀和固定的匹配规则就好。

集群版本不能指定 db

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

go-zero 就是被国内开发环境吊打的太少,老板或者客户说,你的 db 就是 3 ,要么搞定要么滚蛋。你怎么办?

自己改一下就好了啊,我这边用 go-zero 快 2 年了


<br>type RedisConf struct {<br> cache.NodeConf<br> PoolSize int `json:"PoolSize ,default=500 ,optional"`<br> Db int `json:"Db, default=0,optional"`<br>}<br><br><br>......<br><br>//redis/v8 里是能支持指定不同 DB 的。<br>client := redis.NewClient(&amp;redis.Options{<br> Addr: c.CacheRedis[0].Host,<br> Password: c.CacheRedis[0].Pass,<br> PoolSize: c.CacheRedis[0].PoolSize,<br> DB: c.CacheRedis[0].Db,<br> })<br><br>

多库无用,不同服务的 key 前缀区分开就行

go-zero zero😀

这么多人都用 0 库的嘛.
看来我是异类了, 我就喜欢不同项目不同的库…

多库当然是有用的. 只是 redis 集群搞不定这个事情, 迫不得已降级到仅支持 0 库.

如果 redis 当做数据库而不是缓存那么分库其实就比分 key 好,缓存的话还是分 key 更好,redis cluster 本来就已经定位于缓存集群了吧

使用 0 库很正常吧,自己搞集群或多实例呗

#11 没上集群也应该高可用啊…

震惊了。。。 居然只能 0 库

一直用 0 库,不同业务用 key:subkey:… 去区分了,当然,也要限制一些命令的执行。
主要是不管多小的业务,上来就是一套 redis-cluster ,省的后面麻烦了。看业务要求,我们这算是打印个 hello world ,你也要做成高可用的。

我觉得之所以 redis 集群的时候默认只支持 0 库,更多是为了简化集群管理,redis 集群中的所有节点共享相同配置,包含集群 redis 实例使用的数据库编号,通过把所有节点都配置成使用 0 号数据库,可以简化集群的管理和维护工作

在Go语言中,go-zero 是一个高性能的微服务框架,它提供了丰富的组件以简化分布式系统的开发。关于 go-zero 中 Redis 仅支持 0 库的问题,这里有一些专业的解释和建议。

首先,需要明确的是,Redis 本身并没有严格限制只能使用 0 库。Redis 支持多个数据库(从 0 到 15,共 16 个),但通常推荐只使用 0 库,因为多个数据库的使用在 Redis 集群或分片场景中并不常见,且可能增加管理复杂性。

go-zero 框架中,如果默认配置只支持 Redis 的 0 库,这很可能是出于简化配置和管理的考虑。如果确实需要使用其他数据库索引,你可以通过修改配置来实现。

具体来说,你可以检查 go-zero 相关的 Redis 配置部分,通常是在配置文件或代码中指定的 Redis 连接信息。在这里,你可以尝试修改数据库索引参数,以连接到不同的 Redis 库。但请注意,这样做可能会引入额外的管理复杂性和潜在的数据隔离问题。

总之,虽然 go-zero 默认可能只支持 Redis 的 0 库,但这并不意味着你不能使用其他库。通过修改配置,你可以连接到 Redis 的其他数据库索引。然而,在做出这样的更改之前,请务必考虑其对系统整体架构和数据管理的影响。如果你不确定如何操作,建议咨询 go-zero 社区或专业人士的意见。

回到顶部