gpt4 book ai didi

c - C的条目数和重复键leveldb

转载 作者:太空宇宙 更新时间:2023-11-04 03:54:52 25 4
gpt4 key购买 nike

什么是不覆盖 key 的好策略?

假设我用同一个键执行两次 Put 操作,目前它不会引发错误但会覆盖旧值。

我想保留我原来的值(value)观。

一个选择是对每个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;

最佳答案

有几个选项:

  • 在您的 key 中包含其他信息 - 可能是 key 生成时间的时间戳,或者使它真正成为 key 的信息 - 一个独特的值 - 这样您就可以找到其他类似的 key 。

  • 将与键关联的值存储为列表,然后在执行 Put 时,只需附加到该列表的末尾即可。

Leveldb 非常强大但非常简单。您只是在存储字节数组,因此如何解决问题完全取决于您。思考什么在逻辑上是有意义的,然后找出如何将其放入代码中。

关于c - C的条目数和重复键leveldb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17462832/

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