我有一個帶有golang gin服務器,postgresql和redis的docker化后端。一切都從這個 docker-compose.yaml 文件正確開始:version: '3.9'services: postgresql: image: 'postgres:13.1-alpine' volumes: - data:/var/lib/postgresql/data env_file: - ./env/postgre.env healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres"] interval: 10s timeout: 5s retries: 5 ports: - '5432:5432' server: build: ./server ports: - '8000:8000' volumes: - ./server:/app depends_on: - postgresql redis: image: "redis" ports: - "6379:6379" volumes: - $PWD/redis-data:/var/lib/redisvolumes: data:比我在主函數中初始化 redis:func main() { util.InitializeRedis() (...)// InitializeRedis funcfunc newPool() *redis.Pool { return &redis.Pool{ MaxIdle:3, IdleTimeout:240 * time.Second, DialContext: func(context.Context) (redis.Conn, error) { return redis.Dial("tcp",":6379") }, }}var ( pool *redis.Pool)func InitializeRedis() { flag.Parse() pool = newPool()}它不會提示任何錯誤,但我無法與池建立連接。進入另一個函數:處理“/redis”進行測試router.GET("/redis", util.ServeHome)ServeHome funcfunc ServeHome(ctx *gin.上下文){conn := pool.Get()defer conn.Close()var p1 struct{ Title string `redis:"title" json:"title"` Author string `redis:"author" json:"author"` Body string `redis:"body" json:"body"`}p1.Title = "Example"p1.Author = "Gary"p1.Body = "Hello"if _, err := conn.Do("HMSET", redis.Args{}.Add("id1").AddFlat(&p1)...); err != nil { log.Fatalf("Error occured with redis HMSEET, %v", err) // Error in console is from here return}(...)當我嘗試訪問/redis with Insomnia時,它顯示:錯誤:服務器沒有返回任何內容(沒有標頭,沒有數據),并且在控制臺日志中:redis HMSEET發生錯誤,請撥tcp:6379:連接被拒絕我找不到任何為我解決這個問題的文章,所以我很感激任何幫助。
1 回答

BIG陽
TA貢獻1859條經驗 獲得超6個贊
由于您使用的是 docker-compose Redis 在 上不可用,而是在 主機名 上可用。:6379
redis
我認為您需要將代碼更新為以下內容:
redis.Dial("tcp","redis:6379")
- 1 回答
- 0 關注
- 213 瀏覽
添加回答
舉報
0/150
提交
取消