【问题标题】:Berkeley DB: How to GET a specific KEY from QUEUEBerkeley DB:如何从 QUEUE 获取特定的 KEY
【发布时间】:2012-02-23 17:50:41
【问题描述】:

我正在将一些固定长度的记录写入 Berkeley DB 中的 QUEUE,并在每次 PUT 后取回记录号。因此,例如,如果我将 4 条消息放在队列中,我将返回 1、2、3、4。

现在我想根据它的 KEY 从队列中检索一条消息....

所以如果我尝试:

db_recno_t keyval;   
DBT key, data; 

memset(&key, 0, sizeof(DBT)); 
memset(&data, 0, sizeof(DBT)); 

keyval = 2;
key.data =  &keyval; 
key.ulen = sizeof(keyval);
ret = q->get(q, NULL, &key, &data, DB_CONSUME);
printf("Key peek = %i\n", keyval);
printf("Data peek = %s\n", data.data);

我不断取回队列中的第一条记录,而不是我用键指定的记录(在本例中为“2”)

我知道队列中的键是 1、2、3、4,所以我想知道我在这里做了什么愚蠢的事情?

感谢您的帮助,非常感谢 ;-)

林顿

【问题讨论】:

    标签: berkeley-db


    【解决方案1】:

    如果您需要随机访问,请尝试使用 DB_QUEUE 以外的其他数据库格式。

    【讨论】:

      猜你喜欢
      • 2011-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多