Golang笔记

Golang Leveldb 基本使用的例子

Leveldb 是Google 开源的高性能的key-value 数据库,原来由C++ 写,现在由官方用go 实现,效果更好。

下面是入门介绍

安装

go get github.com/syndtr/goleveldb/leveldb

系统要求

  • go 版本go1.2 以上

基本使用示例

建立或打开一个数据库:

db, err := leveldb.OpenFile("path/to/db", nil)
...
defer db.Close()
...

读或写数据库:

// 注意:返回数据结果不能修改
data, err := db.Get([]byte("key"), nil)
...
err = db.Put([]byte("key"), []byte("value"), nil)
...
err = db.Delete([]byte("key"), nil)
...

数据库遍历:

iter := db.NewIterator(nil, nil)
for iter.Next() {
    key := iter.Key()
    value := iter.Value()
    ...
}
iter.Release()
err = iter.Error()
...

迭代查询:

iter := db.NewIterator(nil, nil)
for ok := iter.Seek(key); ok; ok = iter.Next() {
    // Use key/value.
    ...
}
iter.Release()
err = iter.Error()
...

按区间查询:

iter := db.NewIterator(&util.Range{Start: []byte("foo"), Limit: []byte("xoo")}, nil)
for iter.Next() {
    // Use key/value.
    ...
}
iter.Release()
err = iter.Error()
...

按前缀查询:

iter := db.NewIterator(util.BytesPrefix([]byte("foo-")), nil)
for iter.Next() {
    // Use key/value.
    ...
}
iter.Release()
err = iter.Error()
...

批量写:

batch := new(leveldb.Batch)
batch.Put([]byte("foo"), []byte("value"))
batch.Put([]byte("bar"), []byte("another value"))
batch.Delete([]byte("baz"))
err = db.Write(batch, nil)
...

不使用内存数据,直接取硬盘数据:

o := &opt.Options{
    Filter: filter.NewBloomFilter(10),
}
db, err := leveldb.OpenFile("path/to/db", o)
...
defer db.Close()
...

项目地址: https://github.com/syndtr/goleveldb 85 Goleveldb 官方https://godoc.org/github.com/syndtr/goleveldb/leveldb 73

本文网址: https://golangnote.com/topic/81.html (转载注明出处)
关于GolangNote:记录在工作中使用golang 遇到、面临的相关问题及解决方法。如果你在这里获得一些知识或信息,解决你的编程问题,请考虑捐赠给不幸的人或者你喜欢的慈善机构,除捐赠外,种植树木、志愿服务或减少排碳的行为也很有益处。如果你有任何问题可以在下面 留言
Be the first to comment!
Captcha image
Relative Articles