871 B
871 B
Redis(Gateway 共用連線)
用途
- 在
svc.ServiceContext建立一次*redis.Client,全進程共用 go-zero 的 connection pool(同一Addr只會有一個 pool)。 - 各
internal/model/{module}的 factory / repository 注入此 client,禁止在 module 內go-redis.NewClient或重複MustNewRedis。
使用
import redislib "gateway/internal/library/redis"
rds, err := redislib.NewClient(c.Redis) // Host 空 → (nil, nil)
rds.Zero() // *github.com/zeromicro/go-zero/core/stores/redis.Redis
與 Mongo 對照
| Mongo | Redis | |
|---|---|---|
| 封裝 | library/mongo |
library/redis |
| 共用機制 | go-zero mon.clientManager(key = URI) |
go-zero redis.clientManager(key = Addr) |
| 模組內 | 每 collection 一個 repository | 共用 client + 模組 redis.go 定義 key |