Golang 之 key-value LevelDB
时常会在应用中用到数据库功能,象 Key-Value 性质的。直接搬个 Redis,Mysql嫌大,好在有 LevelDB,直接编进应用中。
有关什么是 LevelDB 以及 LevelDB 的特性,可Google之,我们看看如何用。
先要
go get github.com/syndtr/goleveldb/leveldb
然后在文件中 import 进来。
1.打开数据库
db,err = leveldb.OpenFile("./db",nil)
if (err != nil) { panic(err) }
如果这里如果有错,直接报了。
2.然后,读用 db.Get, 写用 db.Put 。
3.代码中的一小段。
package main import ( "github.com/syndtr/goleveldb/leveldb" "fmt" "strconv" ) var db *leveldb.DB const ID_FIELD = "id" func init(){ var err error db,err = leveldb.OpenFile("./db",nil) if (err != nil) { panic(err) } _,err = db.Get([]byte(ID_FIELD),nil) if (err!=nil) { db.Put([]byte(ID_FIELD),[]byte("10000"),nil) } } func GetNextId() int { ids,err := db.Get([]byte(ID_FIELD),nil) if (err != nil) { fmt.Println(err) } id := Byte2int(ids) db.Put([]byte(ID_FIELD),Int2byte(id+1),nil) return id } func Byte2int(val []byte) int { var result int result,_ = strconv.Atoi(string(val)) return result } func Int2byte(val int) []byte { result := []byte(strconv.Itoa(val)) return result }