Я хочу, чтобы лучший код производительности получал последнее значение ключа в базе данных. Я гуглю эту проблему и нахожу функцию SeekToLast, но не знаю, как ее использовать.
Мне нужен пример кода... что-то простое для понимания
спасибо за ссылку, я думаю, моя проблема в том, что я использую этот пакет github.com/syndtr/goleveldb/leveldb вместо вашей ссылки
используйте другой пакет :) здесь вы можете найти пример - github.com/jmhodges/levigo/blob/master/leveldb_test.go#L109
это звучит полезно, спасибо :)
Вы имеете в виду 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)
Это помогает?
пожалуйста объясните что не понятно. пакет должен быть установлен как написано здесь - github.com/DataDog/leveldb