gpt4 book ai didi

leveldb - 如何检查leveldb是否为空

转载 作者:行者123 更新时间:2023-12-04 04:36:55 27 4
gpt4 key购买 nike

假设您不知道 leveldb 数据库中的确切键。

我尝试插入 3 个键并在键范围内使用 GetApproximateSizes,结果始终为零。

那么如何检查 leveldb 中是否有任何键呢?

最佳答案

你不能只使用 leveldb 扫描并打印所有的键和值。例如要打印数据库中的所有键和值,您可以执行以下操作:

  leveldb::Iterator* it = db->NewIterator(leveldb::ReadOptions());
for (it->SeekToFirst(); it->Valid(); it->Next()) {
cout << it->key().ToString() << ": " << it->value().ToString() << endl;
}
assert(it->status().ok()); // Check for any errors found during the scan
delete it;

现在 GetApproximateSizes 给出零值,因为您刚刚插入了 3 个键,它们仍在内存中(memtable)并且尚未到达文件系统。一旦 memtable 已满(默认为 4MB),它就会在级别 0 中创建第一个文件。因此它在更大的数据库和更大的键范围上更有用。

在您的情况下,文件系统中唯一存在数据的地方是重做日志,如果您的键是字符串,您可以通过在 db 目录中调用“字符串日志文件”(在 linux 中)来打印出您的字符串部分进行快速检查键作为确认数据已进入的快速方法。

关于leveldb - 如何检查leveldb是否为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19605813/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com