edo1z blog

プログラミングなどに関するブログです

Go - leveldb

Goで使えるLevelDB。 syndtr/goleveldb ドキュメントはここです。

参考:LevelDB入門 (基本編)

お試しコード

package main

import (
    "fmt"
    "log"
    "github.com/syndtr/goleveldb/leveldb"
)

func main() {
    db := db_init()
    defer func(){
        fmt.Println("Closing DB...")
        db.Close()
    }()

    val, err := db.Get([]byte("key"), nil)
    if err != nil {
        fmt.Println("Key is not exist")
        put(db, []byte("key"), []byte("hello"))
        val, err = db.Get([]byte("key"), nil)
        if err != nil {
            log.Fatal("get error")
        }
    }
    fmt.Printf("key is %s\n", string(val))

    del(db, []byte("key"))
}

func db_init() *leveldb.DB {
    fmt.Println("open database")
    db, err := leveldb.OpenFile("./data/db", nil)
    if err != nil {
        log.Fatal("open error")
    }
    return db
}

func put(db *leveldb.DB, key []byte, value []byte) {
    fmt.Println("put to db")
    err := db.Put(key, value, nil)
    if err != nil {
        log.Fatal("put error")
    }
}

func del(db *leveldb.DB, key []byte) {
    fmt.Println("del from db")
    err := db.Delete(key, nil)
    if err != nil {
        log.Fatal("delete error")
    }
}