Golang 키와 값으로 파일 저장하는 데이터베이스 pudge 라이브러리 알아보기

오늘은 Golang으로 키와 값을 파일 혹은 인메모리로도 저장할 수 있는 pudge 라이브러리를 알아보려 합니다.

pudge 설치

우선 Golang의 환경을 구성하기 위해 https://golang.org/dl/ 에서 윈도우, 리눅스, 맥에서 설치 프로그램을 내려받을 수 있습니다.

맥에서 brew로 쉽게 설치할 수 있습니다.

brew install go

우분투에서도 apt로 쉽게 설치할 수 있습니다.

sudo apt-get install golang-go

go get으로 pudge 패키지를 설치합니다.

go get github.com/recoilme/pudge

홈의 go 폴더에 pudge 소스코드와 패키지 파일이 생성됩니다.

예제

package main

해당 소스코드를 실행 파일로 인식하게 해주도록 main이라고 선언합니다.

import (
	"fmt"

	"github.com/recoilme/pudge"
)

fmt와 pudge를 가져옵니다.

func main() {
	pudge.Set("test_path/test_file", "key", "value")

첫 인자로 주어진 파일 경로에 키와 값을 저장합니다.

	variable := ""
	pudge.Get("test_path/test_file", "key", &variable)
	fmt.Println(variable)

첫 인자로 주어진 파일 경로에서 해당 키의 값을 가져옵니다.

	pudge.DeleteFile("test_path/test_file")

주어진 파일 경로의 DB 파일을 지웁니다.

	cfg := &pudge.Config{}
	db, err := pudge.Open("test_path/test_file", cfg)
	if err != nil {
		panic(err)
	}

FileMode 0666, DirMode 0777 으로 맞추어진 기본 설정을 가지고 DB를 생성합니다.

만약 StroreMode가 2로 설정되어있고, 파일 경로를 지정하지 않으면 인 메모리 데이터베이스로 사용할 수 있습니다.

	type TestStruct struct {
		Fisrt  int
		Second int
	}

구조체를 만들어서 해당 형식에 맞게 값을 넣을 수 있습니다.

	db.Set(1, &TestStruct{Fisrt: 1, Second: 1})
	db.Set(2, &TestStruct{Fisrt: 2, Second: 2})

저장할 때에 키와 인터페이스를 지원하므로 구조체 형식에 맞게 넣을 수도 있습니다.

	var test TestStruct
	db.Get(1, &test)
	fmt.Println(test)

가져오는 것도 구조체 형식으로 가능합니다.

	keys, _ := db.Keys(0, 2, 0, true)
	for _, key := range keys {
		var t TestStruct
		db.Get(key, &t)
		fmt.Println(t)
	}

0번부터 2개의 키를 가져올 수 있습니다.

	defer db.DeleteFile()

DB 파일을 제거합니다.

	if err := pudge.CloseAll(); err != nil {
		panic(err)
	}
}

마지막으로 열려있는 DB를 닫아줍니다.

Written on August 25, 2019