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

2023-03-16 19:43:09 +08:00
 uiosun

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

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

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


最后吐个槽:

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

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

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

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

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

---

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

有大佬再指点一下吗,有点迷惑
uiosun
2023-03-16 22:40:15 +08:00
@hljjhb 🤣这不是小业务,没上集群吗,大佬莫笑
hljjhb
2023-03-16 23:04:03 +08:00
@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
2023-03-16 23:07:15 +08:00
@uiosun redis 作者说了这设计是一个错误。
kawowa
2023-03-17 02:08:25 +08:00
本来想提醒一下用了哨兵就只能用 0 库了,看到楼上已经说了。
想区分系统或者键的话,用前缀和固定的匹配规则就好。
swulling
2023-03-17 06:37:56 +08:00
@uiosun 集群版本不能指定 db

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

go-zero 就是被国内开发环境吊打的太少,老板或者客户说,你的 db 就是 3 ,要么搞定要么滚蛋。你怎么办?
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
2023-03-17 07:41:54 +08:00
多库无用,不同服务的 key 前缀区分开就行
Rehtt
2023-03-17 08:30:15 +08:00
go-zero zero😀
tramm
2023-03-17 08:30:37 +08:00
这么多人都用 0 库的嘛.
看来我是异类了, 我就喜欢不同项目不同的库...
bthulu
2023-03-17 08:30:44 +08:00
多库当然是有用的. 只是 redis 集群搞不定这个事情, 迫不得已降级到仅支持 0 库.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/924633

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX