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进行热备份, 之后可能改为可配置