# Redis(Gateway 共用連線) ## 用途 - 在 **`svc.ServiceContext` 建立一次** `*redis.Client`,全進程共用 go-zero 的 connection pool(同一 `Addr` 只會有一個 pool)。 - 各 `internal/model/{module}` 的 factory / repository **注入**此 client,禁止在 module 內 `go-redis.NewClient` 或重複 `MustNewRedis`。 ## 使用 ```go 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 |