Как использовать SeekToLast для получения последнего значения ключа

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

пожалуйста объясните что не понятно. пакет должен быть установлен как написано здесь - github.com/DataDog/leveldb

myxaxa 08.04.2019 14:09

Мне нужен пример кода... что-то простое для понимания

Alaa Radwan 08.04.2019 14:27

спасибо за ссылку, я думаю, моя проблема в том, что я использую этот пакет github.com/syndtr/goleveldb/leveldb вместо вашей ссылки

Alaa Radwan 08.04.2019 14:32

используйте другой пакет :) здесь вы можете найти пример - github.com/jmhodges/levigo/blob/master/leveldb_test.go#L109

myxaxa 08.04.2019 14:34

это звучит полезно, спасибо :)

Alaa Radwan 08.04.2019 14:51
Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
API ввода вопросов - это полезный инструмент для интеграции моделей машинного обучения, таких как ChatGPT, в приложения, требующие обработки...
1
5
855
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Это помогает?

Другие вопросы по теме