package main
import (
"fmt"
"github.com/syndtr/goleveldb/leveldb"
)
func main() {
levelDB()
}
func levelDB() {
//定義字符數(shù)組key value
? key := []byte("Test")
value := []byte("Test Level DB")
//定義字符串的鍵值對
? k1 :="key"
? v1 :="value"
? // The returned DB instance is safe for concurrent use.
// The DB must be closed after use, by calling Close method.
//文件夾位置,獲取db實例-設置數(shù)據(jù)庫文件的位置
? db, err := leveldb.OpenFile("path/to/db", nil)
//leveldb.
//延遲關閉db流,必須的操作
? defer db.Close()
if err != nil {
fmt.Println(err)
}
//向db中插入鍵值對
? e := db.Put(key, value, nil)
//將字符串轉(zhuǎn)換為byte數(shù)組
? e = db.Put([]byte(k1), []byte(v1), nil)
fmt.Println(e)//
/**
|| 注意:查看路徑下的db文件,可知道文件都是自動切分為一些小文件.
*/
//根據(jù)key值查詢value
? data, _ := db.Get(key, nil)
fmt.Println(data)//[84 101 115 116 32 76 101 118 101 108 32 68 66]
? fmt.Printf("%c\n",data)//[T e s t? L e v e l? D B]
? data, _ = db.Get([]byte(k1), nil)
fmt.Println(data)//[118 97 108 117 101]
? fmt.Printf("%c\n",data)//[v a l u e]
// It is safe to modify the contents of the arguments after Delete returns but
// not before.
//根據(jù)key進行刪除操作
? i := db.Delete(key, nil)
fmt.Println(i)//
? data, _ = db.Get(key, nil)
fmt.Println(data)//[]
//
//獲取db快照
? snapshot, i := db.GetSnapshot()
fmt.Println(snapshot)//leveldb.Snapshot{22}
? fmt.Println(i)//
//注意: The snapshot must be released after use, by calling Release method.
//也就是說snapshot在使用之后,必須使用它的Release方法釋放!
? snapshot.Release()
}
