猿问

redis HMSEET 发生错误,请拨 tcp:6379: 连接: 连接被拒绝

我有一个带有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/redis


volumes: 

  data:

比我在主函数中初始化 redis:


func main() {

    util.InitializeRedis()

    (...)

// InitializeRedis func


func 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 func


func 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:连接被拒绝


我找不到任何为我解决这个问题的文章,所以我很感激任何帮助。


撒科打诨
浏览 266回答 1
1回答

BIG阳

由于您使用的是 docker-compose Redis 在 上不可用,而是在 主机名 上可用。:6379redis我认为您需要将代码更新为以下内容:redis.Dial("tcp","redis:6379")
随时随地看视频慕课网APP

相关分类

Go
我要回答