Как использовать SeekToLast для получения последнего значения ключа - PullRequest
0 голосов
/ 08 апреля 2019

Я хочу, чтобы лучший код производительности получал последнее значение ключа в базе данных.Я пытаюсь решить эту проблему и найти функцию SeekToLast, но не знаю, как ее использовать.

1 Ответ

0 голосов
/ 10 апреля 2019

Вы имеете в виду 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)

Помогает ли это?

...