打开数据库
package main
import (
"os"
"github.com/boltdb/bolt"
"github.com/go-kit/kit/log"
)
func main() {
logger := log.NewLogfmtLogger(os.Stdout)
db, err := bolt.Open("mydb.db", 0600, nil)
if err != nil {
logger.Log("open", err)
}
defer db.Close()
}
put一个键值对(增加)
把一个key/value保存到bucket中,使用Bucket.Put():
介绍一下bucket,bucket是bolt数据库中一个“桶”,类似于mysql数据库中具体的库名>(只能说类似,具体可看官网详细介绍)
if err := db.Update(func(tx *bolt.Tx) error {
if _, err := tx.CreateBucketIfNotExists([]byte("kl")); err != nil {//判断是否存在
logger.Log("create failed", err.Error())
return err
}
b := tx.Bucket([]byte("kl"))
err = b.Put([]byte("konglong"), []byte("恐龙"))
return err
}); err != nil {
logger.Log("update error is:", err.Error())
}
获取一个值
获取这个值,可以使用 Bucket.Get() 函数。
if err := db.View(func(tx *bolt.Tx) error {
b := tx.Bucket([]byte("kl"))
v := b.Get([]byte("konglong"))
fmt.Printf("the data is :%s\n", v)
return nil
}); err != nil {
logger.Log("view error :", err.Error())
}
if err := db.View(func(tx *bolt.Tx) error {
b := tx.Bucket([]byte("kl"))
v := b.Get([]byte("konglong2b"))
fmt.Printf("the data is :%s\n", v)
return nil
}); err != nil {
logger.Log("view error:", err.Error())
}
foreach 函数,遍历所有key
db.View(func(tx *bolt.Tx) error {
b := tx.Bucket([]byte("konglong"))
//konglong 这个 桶 必须存在!!!
b.ForEach(func(k, v []byte) error {
fmt.Printf("key=%s, value=%s\n", k, v)
return nil
})
return nil
})`