badfer是一个纯Go实现的快速的嵌入式K/V数据库,针对LSM tree做了优化。
安装
$ go get github.com/dgraph-io/badger/...
数据库
打开一个数据库
opts := badger.DefaultOptions
opts.Dir = "/tmp/badger"
opts.ValueDir = "/tmp/badger"
db, err := badger.Open(opts)
if err != nil {
log.Fatal(err)
}
defer db.Close()
复制代码
存储
存储kv
使用 Txn.Set()方法
err := db.Update(func(txn *badger.Txn) error {
err := txn.Set([]byte("answer"), []byte("42"))
return err
})
复制代码
批量设置
wb := db.NewWriteBatch()
defer wb.Cancel()
for i := 0; i < N; i++ {
err := wb.Set(key(i), value(i), 0) // Will create txns as needed.
handle(err)
}
handle(wb.Flush()) // Wait for all txns to finish.
复制代码
WriteBatch不允许任何读取。对于读-修改-写,应该使用事务API。
设置生存时间 TTL
Badger允许在键上设置一个可选的生存时间(TTL)值。一旦TTL结束,KEY将不再是可检索的,并且将进行垃圾收集。TTL可以使用Txn.SetWithTTL() 设置为一个time.Duration的值
设置元数据
Txn.SetWithMeta() 设置用户元数据
使用 Txn.SetEntry() 可以一次性设置key, value, user metatadata and TTL
遍历keys
要遍历键,我们可以使用迭代器,可以使用 Txn.NewIterator()`方法获得迭代器。迭代按字节字典排序顺序进行。
er

本文详细介绍了Badger,一个高性能的Go实现的嵌入式K/V数据库,专注于LSM树的优化。内容涵盖安装、数据库操作、存储 kv、设置TTL、元数据管理、遍历keys、数据流、事务处理等关键功能,适用于需要高效数据库解决方案的开发者。
最低0.47元/天 解锁文章
2875

被折叠的 条评论
为什么被折叠?



