BoltDB简单使用教程

  • 时间:
  • 浏览:3
  • 来源:大发快3_快3计划网_大发快3计划网

1.BoltDB简介

Bolt是一一一两个多 纯粹Key/Value模型的程序。该项目的目标是为不须要删剪数据库服务器(如Postgres或MySQL)的项目提供一一一两个多 简单,快速,可靠的数据库。

BoltDB只须要将其链接到你的程序运行代码中即可使用BoltDB提供的API来高效的存取数据。因此BoltDB支持删剪可序列化的ACID事务,让程序运行还都可不上能更简单的外理复杂操作。

其源码地址为:https://github.com/boltdb/bolt

2.BoltDB社会形态

BoltDB设计源于LMDB,具有以下特点:

  • 使用Go语言编写

  • 不须要服务器即可运行

  • 支持数据社会形态

  • 直接使用API存取数据,越来越 查询励志的话 ;

  • 支持删剪可序列化的ACID事务,你类式社会形态比LevelDB强;

  • 数据保处在内存映射的文件里。越来越 wal、程序压缩和垃圾回收;

  • 通过COW技术,可实现无锁的读写并发,因此无法实现无锁的写写并发,这就注定了读性能超高,但写性能一般,适合与读多写少的场景。

BoltDB是一一一两个多 Key/Value(键/值)存储,这原困 越来越 像SQL RDBMS(MySQL,PostgreSQL等)中的表,越来越 行,越来越 列。相反,数据作为键值对存储(如在Golang Maps中)。键值对存储在Buckets中,它们旨在对类式的对进行分组(这与RDBMS中的表类式)。因此,为了获得Value(值),须要知道该Value所在的桶和钥匙。

3.BoltDB的安装

Linux中:

$ go get github.com/boltdb/bolt/...

Windows中:

1.前提是不可能 安装GO语言环境.

2.安装git for windows :

 http://git-for-windows.github.io/

3.安装Git后并能执行命令:

go get github.com/boltdb/bolt/...

来安装第三方包。这条命令它会把 类库包源代码,下载解压到你的 %GOPATH% 路径上边去,比如:C:\go\gopath\   src\github.com\...

前面是gopath路径,上边是类库,因此它都会同时执行 go install xxx ,生成 D:\go\gopath\pkg\xxxx 以前的包路径。

注意:

【在GoLand开发工具中,是还都可不上能直接获取GitHub中的源代码的,该法子更便捷!】

4. 在代码中导入第三方包:

import (
    "github.com/boltdb/bolt" // 从环境变量:%goPath% 中定义的路径去查找第三方类库
)

4.BoltDB简单使用

4.1 打开或创建数据库

//1.数据库创建
    //在这里gland直接运行,生成的my.db在main.go上层目录;命令行build在运行励志的话

是当前目录!!!
    db, err := bolt.Open("chaorsBlock.db", 0800, nil)
    if err != nil {
        log.Fatal(err)
    }
    defer db.Close()

注意:

不可能 通过goland程序运行创建的my.db会保处在$GOPATH /src/Project目录下

不可能 通过go build main.go ; ./main 执行生成的my.db,会保处在当前目录$GOPATH /src/Project/package下

4.2 数据库操作

4.2.1 创建数据库表

//2.创建表
    err = db.Update(func(tx *bolt.Tx) error {
  
                //判断要创建的表不是处在
        b := tx.Bucket([]byte("MyBlocks"))
        if b == nil {
  
                //创建叫"MyBucket"的表
            _, err := tx.CreateBucket([]byte("MyBlocks"))
            if err != nil {
                                //也还都可不上能在这里对表做插入操作
                log.Fatal(err)
            }
        }

        //一定要返回nil
        return nil
    })

    //更新数据库失败
    if err != nil {
        log.Fatal(err)
    }

4.2.2 更新

//3.更新表数据
    err = db.Update(func(tx *bolt.Tx) error {

        //取出叫"MyBucket"的表
        b := tx.Bucket([]byte("MyBlocks"))

        //往表上边存储数据
        if b != nil {
                        //插入的键值对数据类型须而是

字节数组
            err := b.Put([]byte("l"), []byte("0x0000"))
            err := b.Put([]byte("ll"), []byte("0x0001"))
                        err := b.Put([]byte("lll"), []byte("0x0002"))
            if err != nil {
                log.Fatal(err)
            }
        }

        //一定要返回nil
        return nil
    })

    //更新数据库失败
    if err != nil {
        log.Fatal(err)
    }

4.2.3 查询

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

        //取出叫"MyBucket"的表
        b := tx.Bucket([]byte("MyBlocks"))

        //往表上边存储数据
        if b != nil {

            data := b.Get([]byte("l"))
            fmt.Printf("%s\n", data)
            data := b.Get([]byte("l"))
            fmt.Printf("%s\n", data)
        }

        //一定要返回nil
        return nil
    })

    //查询数据库失败
    if err != nil {
        log.Fatal(err)
    }

猜你喜欢

蓬佩奧訪歐盟 晤候任領導人

圖:蓬佩奧(左)3日會見歐洲議會議長薩索利\法新社【大公報訊】據美國Politico網站報道:美國國務卿蓬佩奧於2日抵達比利時布魯塞爾,進行為期兩天的訪問,欲重啟美國與歐盟關係

2020-01-20

瓜 園/「紀念幣」/蓬 山

這裏所說的「紀念幣」,有的是指銀行為了紀念某件大事或某個人物而發行的貨幣,可是我指整理錢幣作為紀念品。外出旅遊,買點小紀念品是人之常情,幾乎是例行公事。每個人的喜好不同,他们喜

2020-01-19

王者荣耀吕布野性能量什么样?野性能量皮肤技能视觉效果一览

王者荣耀吕布野性能量皮肤是有哪些样子,这款皮肤的技能动作效果是有哪些样的呢,我门都歌词 来一起看下具体的全部技能视觉效果图介绍。被动技能:吕布的背后会三个小多“魔爪”的标

2020-01-19

看色情网先脸部识别 澳洲新政涉泄隐私

【大公报讯】据《悉尼先驱晨报》报道:为了补救色情网站对未成年人的荼毒,澳洲内政部正在研发一套脸部辨识系统,用来限制未成年人过早接触色情与赌博网站,但此举引发对用户隐私机会泄露的

2020-01-19

剑网3指尖江湖悬赏任务怎么做?悬赏boss怎么打

剑网3指尖江湖里的悬赏任务要何如会会在么在做,悬赏任务中的boss击杀有哪此技巧法律法律依据,以下亲戚亲戚亲戚朋友来了解何如快速完成悬赏任务。剑网3指尖江湖BOSS的打法打悬赏

2020-01-19