golang bolt 数据库示例
bolt 数据库是一个纯粹用go编写的key/value数据库,这个库的目的是为了提供一个简单,快速可靠的数据库
package main import ( "github.com/boltdb/bolt" "log" "os" "testing" ) // ============================================================================== func p(a ...interface{}) (n int, err error) { return fmt.Print(a...) } func pn(a ...interface{}) (n int, err error) { return fmt.Println(a...) } func pf(format string, a ...interface{}) (n int, err error) { return fmt.Printf(format, a...) } func pfn(format string, a ...interface{}) (n int, err error) { return fmt.Printf(format+"\n", a...) } // ============================================================================== type DB struct { *bolt.DB name string } func Open(path string, mode os.FileMode, options *bolt.Options) (*DB, error) { db, err := bolt.Open(path, mode, options) return &DB{DB: db, name: "test"}, err } func (db *DB) Name(name string) *DB { db.name = name return db } func (db *DB) Set(k string, v string) *DB { err := db.Update(func(tx *bolt.Tx) error { b, err := tx.CreateBucketIfNotExists([]byte(db.name)) if err != nil { log.Fatal(err) } return b.Put([]byte(k), []byte(v)) }) if err != nil { log.Fatal(err) } return db } func (db *DB) Get(k string) (string, error) { var v string err := db.View(func(tx *bolt.Tx) error { b := tx.Bucket([]byte(db.name)) v = string(b.Get([]byte(k))) return nil }) return v, err } func Test(t *testing.T) { db, _ := Open("my-bolt.db", 0644, nil) db.Name("mytest").Set("0", "000").Set("1", "111").Set("2", "222") pn(db.Get("0")) pn(db.Get("1")) pn(db.Get("2")) db.Close() }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库