고루틴으로 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초이상 걸리길래 아무래도 잘못된거같은데... 조금 조언좀 해주시면 감사하겠습니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
댓글 입력