Golang 인 메모리 캐시 BigCache 라이브러리 알아보기

오늘은 Golang으로 대용량의 데이터를 유지할 수 있는 인 메모리 캐시를 구현한 BigCache 라이브러리를 알아보려 합니다.

BigCache 설치

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

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

brew install go

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

sudo apt-get install golang-go

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

go get github.com/allegro/bigcache

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

예제

package main

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

import (
	"fmt"
	"time"

	"github.com/allegro/bigcache"
)

fmt와 time 그리고 bigcache를 가져옵니다.

func main() {
	defaultCache, err := bigcache.NewBigCache(bigcache.DefaultConfig(10 * time.Minute))
	if err != nil {
		panic(err)
	}

기본 설정 값으로 BigCache 객체를 생성합니다.

	defaultCache.Set("test_id", []byte("hello"))

키와 값을 저장합니다.

	if entry, err := defaultCache.Get("test_id"); err == nil {
		fmt.Println(string(entry))
	}

키를 이용하여 값을 가져옵니다.

	config := bigcache.Config{
		Shards:             1024,
		LifeWindow:         10 * time.Minute,
		CleanWindow:        1 * time.Minute,
		MaxEntriesInWindow: 1000 * 10 * 60,
		MaxEntrySize:       500,
		Verbose:            true,
		HardMaxCacheSize:   0,
		OnRemove:           nil,
		OnRemoveWithReason: nil,
	}

캐시 샤드, 유지 시간, 만료 제거 간격, 최대 항목 수와 크기 같은 값들과 콜백들을 설정할 수 있습니다.

	customCache, err := bigcache.NewBigCache(config)
	if err != nil {
		panic(err)
	}

위에서 설정한 설정 값으로 BigCache 객체를 생성합니다.

	customCache.Set("test_id", []byte("hello"))

키와 값을 저장합니다.

	if entry, err := customCache.Get("test_id"); err == nil {
		fmt.Println(string(entry))
	}
}

키를 이용하여 값을 가져옵니다.

Written on August 17, 2019