2012-11-16 7 views
11

Es scheint, dass es keine solche Schnittstelle gibt.Wie bekomme ich die genaue Anzahl der Schlüssel in leveldb schnell?

Muss ich alle Schlüssel durchlaufen, um die Anzahl zu erhalten?

Was ist der Designzweck? Oder was ist die Einschränkung, diese Funktion zu implementieren?

+0

Ja, Sie müssten über alle Schlüssel iterieren, es sei denn, Sie implementieren Ihre eigenen Aufzeichnungen, wenn Sie Datensätze einfügen/entfernen (was ziemlich einfach sein sollte). – Kiril

Antwort

9

"Es gibt keine Möglichkeit, Count innerhalb von leveldb effizienter zu implementieren als außerhalb." Staaten Offical issue 113

Sieht aus wie es keinen besseren Weg, es zu tun ist, mit Ausnahme entweder durch den gesamten Datensatz Iterieren oder Ihre eigenen in-Anwendung Umsetzung on-Write-Zähler.

1

Wahrscheinlich, wenn LevelDB erstellt wurde, war diese API nicht für die ursprünglichen Autoren erforderlich. Leider hat LevelDB keine Inkrement-API, die Sie zum Zählen verwenden können. Was Sie jetzt tun können, ist Lesen und Schreiben eines Schlüssels in Leveldb, aber das ist nicht threadsicher.

Vielleicht können Sie sich Redis ansehen, wenn es für Ihren Anwendungsfall besser geeignet ist.

Verwandte Themen