什么是不覆盖密钥的好策略?
假设我用同一个键执行了两次Put操作,目前它不会引发错误但会覆盖旧值。
我想保持我原来的价值。
一种选择是对每个Put进行额外读取,以查看它是覆盖还是插入。但是在这种情况下,对于第一个元素,我还需要检查数据库的大小。我的 str 是一个增量字符串,因此相同代码的下一次迭代将具有相同的键但不同的 str。
leveldb_t *db;
leveldb_options_t *options;
leveldb_readoptions_t *roptions;
leveldb_writeoptions_t *woptions;
size_t read_len;
char *err = NULL;
/* OPEN */
options = leveldb_options_create();
db = leveldb_open(options, "testdb", &err);
if (err != NULL)
return;
leveldb_free(err);
err = NULL;
/* WRITE */
woptions = leveldb_writeoptions_create();
leveldb_writeoptions_set_sync(woptions, 1);
leveldb_put(db, woptions, "Key", 3, *str, 64 , &err);
if (err != NULL)
return(1);
leveldb_free(err);
err = NULL;