bolt数据库简单使用教程

打开数据库

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
})`

猜你喜欢

转载自blog.csdn.net/qq_39716284/article/details/82970068
今日推荐