nfdb usage - nyjora/nyjora-framework GitHub Wiki
nfdb API
func Start() error
启动DB, 参数将从配置中读取,所以需要先初始化配置数据
并启动每天凌晨3点半的自动热备份
func Close()
关闭数据库
func BackUp()
立刻开始备份
其他接口使用boltdb的原生接口
example
写
func TestDBWrite() {
nfdb.Wg.Add(1)
defer nfdb.Wg.Done()
// add data to base
err := nfdb.DB.Update(func(tx *bolt.Tx) error {
err := tx.Bucket([]byte("base")).Put([]byte("roleid"), []byte("roleinfo"))
return err
})
if err != nil {
fmt.Printf("[TestDBWrite] write error %v\n", err)
}
return
}
读
func TestDBRead() {
nfdb.Wg.Add(1)
defer nfdb.Wg.Done()
// add data to base
err := nfdb.DB.View(func(tx *bolt.Tx) error {
val := tx.Bucket([]byte("base")).Get([]byte("chenyan"))
if val == nil {
return errors.New("Db not found.")
}
fmt.Printf("[base]chenyan : %s\n", val)
val2 := tx.Bucket([]byte("status")).Get([]byte("chenyan"))
if val2 == nil {
return errors.New("Db not found.")
}
fmt.Printf("[status]chenyan : %s\n", val2)
return nil
})
if err != nil {
fmt.Printf("[TestDBRead] read error %v\n", err)
}
return
}
删
func TestDBDel() {
nfdb.Wg.Add(1)
defer nfdb.Wg.Done()
// add data to base
err := nfdb.DB.Update(func(tx *bolt.Tx) error {
err := tx.Bucket([]byte("base")).Delete([]byte("chenyan"))
return err
})
if err != nil {
fmt.Printf("[TestDBDel] delete error %v\n", err)
}
return
}
hotbackup
目前hardcode了每天3:30进行热备份, 之后可能改为可配置