Bolt数据库简介
Bolt
是一个用Go
编写的键值数据库。其目标是为了给程序提供一个简单、快捷、稳定的数据库。
读写数据
func main() {
//打开数据库
// func Open(path string, mode os.FileMode, options *Options) (*DB, error) {
db, err := bolt.Open("testDb.db", 0600, nil)//第二个参数为权限
if err != nil {
fmt.Println(" bolt Open err :", err)
return
}
defer db.Close()
//创建bucket
//Updata参数为一个函数类型,是一个事务
err = db.Update(func(tx *bolt.Tx) error {
//打开一个bucket
b1 := tx.Bucket([]byte("bucket1"))
//没有这个bucket
if b1 == nil {
//创建一个bucket
b1, err = tx.CreateBucket([]byte("bucket1"))
if err != nil {
fmt.Printf("tx.CreateBucket err:", err)
return err
}
//写入数据
b1.Put([]byte("key1"), []byte("hello"))
b1.Put([]byte("key2"), []byte("world"))
//读取数据
v1 := b1.Get([]byte("key1"))
v2 := b1.Get([]byte("key2"))
v3 := b1.Get([]byte("key3"))
fmt.Printf("v1:%s\n", string(v1))
fmt.Printf("v2:%s\n", string(v2))
fmt.Printf("v3:%s\n", string(v3))
}
return nil
})
if err != nil {
fmt.Printf("db.Update err:", err)
}
return
}
对数据库有写操作一定要用db.Update()
只读数据
func main() {
//打开数据库
// func Open(path string, mode os.FileMode, options *Options) (*DB, error) {
db, err := bolt.Open("testDb.db", 0400, nil)//第二个参数为权限
if err != nil {
fmt.Println(" bolt Open err :", err)
return
}
defer db.Close()
//创建bucket
//View参数为一个函数类型,是一个事务
err = db.View(func(tx *bolt.Tx) error {
//打开一个bucket
b1 := tx.Bucket([]byte("bucket1"))
//没有这个bucket
if b1 == nil {
return errors.New("bucket do not exist!")
}
v1 := b1.Get([]byte("key1"))
v2 := b1.Get([]byte("key2"))
v3 := b1.Get([]byte("key3"))
fmt.Printf("v1:%s\n", string(v1))
fmt.Printf("v2:%s\n", string(v2))
fmt.Printf("v3:%s\n", string(v3))
return nil
})
if err != nil {
fmt.Printf("db.View err:", err)
}
return
}
只读数据可以用db.View()