go-memdb
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go-memdb相关的知识,希望对你有一定的参考价值。
// Create a sample struct type Person struct { Email string Name string Age int } // 创建数据库的 DBSchema , 它包括多个表结构: Tables map[string]*TableSchema
// 每个表结构是 TableSchema, 它定义对应的index :
// type TableSchema struct { // Name string // Indexes map[string]*IndexSchema // }
schema := &memdb.DBSchema{ Tables: map[string]*memdb.TableSchema{ "person": &memdb.TableSchema{ Name: "person", Indexes: map[string]*memdb.IndexSchema{ "id": &memdb.IndexSchema{ // 从代码来看,是基于 email 来建立 index Name: "id", Unique: true, Indexer: &memdb.StringFieldIndex{Field: "Email"}, }, }, }, }, } // 基于schema 创建数据库 db, err := memdb.NewMemDB(schema) if err != nil { panic(err) } // 创建写事务 txn := db.Txn(true) // 插入记录 p := &Person{"[email protected]", "Joe", 30} if err := txn.Insert("person", p); err != nil { panic(err) } // Commit txn.Commit() // 创建只读事务 txn = db.Txn(false) defer txn.Abort() // 返回第一个符合的记录 raw, err := txn.First("person", "id", "[email protected]") if err != nil { panic(err) } // Say hi! fmt.Printf("Hello %s!", raw.(*Person).Name)
以上是关于go-memdb的主要内容,如果未能解决你的问题,请参考以下文章