고루틴으로 redis에 저장하는 코드 질문입니다.

조회수 729회

golang에서 고루틴으로 동시 저장 처리를 테스트를 해보고 있는데 굉장히 느리다고 느껴져서 아무래도 고루틴을 잘 못 이해하고 있는 느낌이 들어서 질문글을 조금 남겨봅니다.


package main

import(
  "time"
  "fmt"
  "github.com/go-redis/redis"
)

func main() {
  startTime := time.Now()
  r := make(chan string)

  client := redis.NewClient(&redis.Options{
        Addr:     "localhost:6379",
        Password: "", // no password set
        DB:       0,  // use default DB
    })

  go func() {
    err := client.HSet("go_p", "111", "111").Err()
    if err != nil {
        panic(err)
    } else {
      r <- "111"
    }

  }()

  go func() {
    err := client.HSet("go_p", "222", "222").Err()
    if err != nil {
        panic(err)
    } else {
      r <- "222"
    }

  }()

  go func() {
    err := client.HSet("go_p", "333", "333").Err()
    if err != nil {
        panic(err)
    } else {
      r <- "333"
    }

  }()

  go func() {
    err := client.HSet("go_p", "444", "444").Err()
    if err != nil {
        panic(err)
    } else {
      r <- "444"
    }

  }()

  a, b, c, d := <- r, <- r, <- r, <- r

  elapsedTime := time.Since(startTime)

  fmt.Println(a,b,c,d)
  fmt.Printf("실행시간: %s\n", elapsedTime)

}

1초이상 걸리길래 아무래도 잘못된거같은데... 조금 조언좀 해주시면 감사하겠습니다.

  • (•́ ✖ •̀)
    알 수 없는 사용자
  • 제 컴퓨터에서 실행하니 실행시간이 3ms ~ 4ms가 나오는데 혹시 한번만 더 확인 가능 하신지요? 알 수 없는 사용자 2018.10.2 17:28
  • 저는 윈도우에서 하고 있는데 여러번해도 1초이상 나오더라구요.. 알 수 없는 사용자 2018.10.2 18:13

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)