java - Berkley 使用散列配置将数据更新为新值

标签 java hash berkeley-db put

我正在尝试编写一个使用 Berkeley 数据库的程序,我按如下方式配置了我的数据库:

DatabaseConfig dbConfig = new DatabaseConfig();

dbConfig.setType(DatabaseType.HASH);
dbConfig.setAllowCreate(true);
dbConfig.setSortedDuplicates(false); //tried commented this out as well

// Create the database
std_db = new Database("name.db", null, dbConfig); //delcared as a private variable

过去一个小时,我一直在网上搜索当要输入的新 key 与现有 key 匹配时 key /数据对会发生什么。根据 API,当前数据将被新数据覆盖,但在我的程序中似乎并非如此。任何人都知道如何做到这一点,以便如果我将其放入数据库并且存在 key ,它将覆盖旧数据?

我想先删除旧 key ,然后再放入新 key /数据组合,但这个解决方案是一种变通方法,只是增加了不必要的开销。

提前致谢:)

最佳答案

我认为 database.put() 是解决方案。根据以下链接:

Db::put 方法将键/数据对存储在数据库中。 Db::put 函数的默认行为是输入新的键/数据对,如果不允许重复则替换任何先前存在的键,或者如果允许重复则添加重复的数据项。如果数据库支持重复,则 Db::put 方法将新数据值添加到重复集的末尾。如果数据库支持排序的重复项,则新数据值将插入正确的排序位置。

http://web.deu.edu.tr/doc/berkeley/berkeleyDB/api_cxx/db_put.html

关于java - Berkley 使用散列配置将数据更新为新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8176701/

相关文章:

arrays - 为什么 Perl 在声明时将哈希元素视为列表上下文?

C 哈希表大小问题

php - 通过Redis Hash存储和查找

c - 如何使用 C 在 Berkeley DB 中将整数值分配给 "key.data"

java - BerkeleyDB 写入性能问题

java - 如何使用纯 java api 查找针对类别值归档的工作项?

java - 是否可以在 headless (headless)模式下使用 JDT 加载 eclipse Java 项目?

java - java中的构造函数

c++ - Berkeley DB 和 C++ 基准示例?

java - Spring Controller RequestMapping PathVariable 中 URL 的零长度部分破坏了解析