Go语言中使用 BoltDB数据库

Posted 刘贤松

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go语言中使用 BoltDB数据库相关的知识,希望对你有一定的参考价值。

boltdb 是使用Go语言编写的开源的键值对数据库,Github的地址如下:

https://github.com/boltdb/bolt

boltdb 存储数据时 key 和 value 都要求是字节数据,此处需要使用到 序列化和反序列化。

以下为boltdb的常见使用方式:

1、安装Boltdb数据库

使用如下命令进行安装

go get github.com/boltdb/bolt

2、常见API操作

package main
import (
	"github.com/boltdb/bolt"
	"log"
	"fmt"
)
func main()  
	// Open the my.db data file in your current directory.
	// It will be created if it doesn't exist.
	// 创建或者打开数据库
	db, err := bolt.Open("my.db", 0600, nil)
	if err != nil 
		log.Fatal(err)
	
	defer db.Close()


	// 创建表
	err = db.Update(func(tx *bolt.Tx) error 
		// 获取BlockBucket表单
		b := tx.Bucket([]byte("BlockBucket"))

		// 往表里面存储数据
		if b != nil 
			err := b.Put([]byte("ll"),[]byte("Send 1000 BTC To 冠希哥......"))
			if err != nil 
				log.Panic("数据存储失败......")
			
		

		// 返回nil,以便数据库处理相应操作
		return nil
	)
	//更新失败
	if err != nil 
		log.Panic(err)
	

	// 查看数据
	err = db.View(func(tx *bolt.Tx) error 

		// 获取BlockBucket表对象
		b := tx.Bucket([]byte("BlockBucket"))

		// 往表里面存储数据
		if b != nil 
			data := b.Get([]byte("l"))
			fmt.Printf("%s\\n",data)
			data = b.Get([]byte("ll"))
			fmt.Printf("%s\\n",data)
		

		// 返回nil,以便数据库处理相应操作
		return nil
	)
	//更新失败
	if err != nil 
		log.Panic(err)
	

以上是关于Go语言中使用 BoltDB数据库的主要内容,如果未能解决你的问题,请参考以下文章

Boltdb-key-Value 数据存储纯粹在 Go 中

存储引擎 boltdb 的设计奥秘?

Boltdb源码分析----meta结构

详细的BoltDB学习记录文档

cpp 区块链模拟示例 序列化

在 BoltDB 中存储数据的最佳方式