如何使用 SeekToLast 获取最后一个键值
How to use SeekToLast to get last key value
我想要性能最佳的代码来获取数据库中的最后一个键值。我google这个问题并找到了SeekToLast函数,但我不知道如何使用它。
你是说 goleveldb 吗?
如果是这样,那么它看起来像
iter := db.NewIterator(nil, nil)
ok := iter.Last()
if ok {
key = iter.Key()
value = iter.Value()
}
iter.Release() // Note: you should first get data and then release iterator
err = iter.Error()
或者从末尾迭代到开头。
iter := db.NewIterator(nil, nil)
for ok := iter.Last(); ok; ok = iter.Prev() {
// Use key/value.
// ...
}
iter.Release()
err = iter.Error()
您还可以检索具有特定前缀的最后一个键值,或者通常从某个范围检索(更多详细信息:https://godoc.org/github.com/syndtr/goleveldb/leveldb#DB.NewIterator)
iter := db.NewIterator(util.BytesPrefix([]byte("prefix_")), nil)
// or
iter := db.NewIterator(util.Range{
Start: []byte("prefix_03"),
Limit: []byte("prefix_04"),
}), nil)
有帮助吗?
我想要性能最佳的代码来获取数据库中的最后一个键值。我google这个问题并找到了SeekToLast函数,但我不知道如何使用它。
你是说 goleveldb 吗?
如果是这样,那么它看起来像
iter := db.NewIterator(nil, nil)
ok := iter.Last()
if ok {
key = iter.Key()
value = iter.Value()
}
iter.Release() // Note: you should first get data and then release iterator
err = iter.Error()
或者从末尾迭代到开头。
iter := db.NewIterator(nil, nil)
for ok := iter.Last(); ok; ok = iter.Prev() {
// Use key/value.
// ...
}
iter.Release()
err = iter.Error()
您还可以检索具有特定前缀的最后一个键值,或者通常从某个范围检索(更多详细信息:https://godoc.org/github.com/syndtr/goleveldb/leveldb#DB.NewIterator)
iter := db.NewIterator(util.BytesPrefix([]byte("prefix_")), nil)
// or
iter := db.NewIterator(util.Range{
Start: []byte("prefix_03"),
Limit: []byte("prefix_04"),
}), nil)
有帮助吗?