본문 바로가기
카테고리 없음

Go에서 Redis 사용하기

by 꼬마상어 2021. 2. 15.
반응형

Go에서 Redis 사용하기

Client 선정

사용 예

package main

import (
    "log"

    "net/http"

    "github.com/gomodule/redigo/redis"

    "github.com/labstack/echo/v4"
)

func main() {
    e := echo.New()
    e.POST("/insert/:key", insert)
    e.GET("/delete/:key", delete)
    e.GET("/get/:key", get)

    e.Logger.Fatal(e.Start(":5000"))
}

func connection() redis.Conn {
    c, err := redis.Dial("tcp", ":6379")
    if err != nil {
        log.Fatal(err.Error())
    }

    // 커넥션 체크!
    pong, err := redis.String(c.Do("PING"))
    if err != nil {
        c.Close()
        log.Fatal(err.Error())
    }
    fmt.Printf("PING Response = %s\n", pong)

    return c
}

func insert(c echo.Context) error {
    // 데이터
    conn := connection()
    defer conn.Close()

    key := c.Param("key")
    value := c.QueryParam("value")

    reply, err := conn.Do("SET", key, value)
    if err != nil {
        return c.String(http.StatusBadRequest, err.Error())
    }

    return c.JSON(http.StatusOK, reply)
}

func delete(c echo.Context) error {
    // 데이터 삭제
    conn := connection()
    defer conn.Close()
    key := c.Param("key")

    reply, err := conn.Do("DEL", key)
    if err != nil {
        return c.String(http.StatusOK, err.Error())
    }

    return c.JSON(http.StatusOK, reply)
}

func get(c echo.Context) error {
    // 데이터 조회
    conn := connection()
    defer conn.Close()
    key := c.Param("key")

    reply, err := redis.String(conn.Do("GET", key))
    if err != nil {
        return c.String(http.StatusOK, err.Error())
    }

    return c.JSON(http.StatusOK, reply)
}
반응형

댓글