请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

连接docker里的redis会失败

我把redis装在docker里并且做了端口映射,运行过程中发现值始终没办法设置进redis中,自己写了一个demo测试了一下,发现有这个报错

  • redis连接测试代码
// redis连接测试代码
func testRedis() bool {
	// e.g. REDIS_PORT = tcp://172.17.0.89:6379
	conn, err := redis.DialTimeout("tcp", "127.0.0.1:6379", 0, 1*time.Second, 1*time.Second)
	if err != nil {
		fmt.Println(err)
		return false
	}
	defer conn.Close()

	size, err := conn.Do("DBSIZE")
	if err != nil {
		fmt.Println(err)
		return false
	}
	fmt.Printf("DB size is %d \n", size)

	_, err = conn.Do("SET", "user:user0", 123)
	_, err = conn.Do("SET", "user:user1", 456)
	_, err = conn.Do("APPEND", "user:user0", 87)

	user0, err := redis.Int(conn.Do("GET", "user:user0"))
	user1, err := redis.Int(conn.Do("GET", "user:user1"))

	fmt.Printf("user0 is %d , user1 is %d \n", user0, user1)
	return true
}

func main() {
	fmt.Println(time.Now(), "[Redis test start]")

	if testRedis() {
		fmt.Println("[Redis test ok]")
	} else {
		fmt.Println("[Redis test failed]")
	}
}
  • 报错部分
    图片描述

正在回答 回答被采纳积分+3

1回答

xiaomo 2021-01-07 23:24:29

同学你好,docker里redis容器的ip是什么呢?看起来是127.0.0.1:6379中的127.0.0.1的原因,把这个ip换成docker网络下容器的ip看看。

0 回复 有任何疑惑可以回复我~
  • 提问者 TedZheng #1
    谢谢老师,刚刚破案了,redis-default.conf的bind写的是127.0.0.1,我理解的是只允许docker内的应用与之进行通信。把他改成0.0.0.0就可以用了
    回复 有任何疑惑可以回复我~ 2021-01-07 23:27:21
  • xiaomo 回复 提问者 TedZheng #2
    强~~
    回复 有任何疑惑可以回复我~ 2021-01-22 00:39:45
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信