Berkeley DB:如何从QUEUE获取特定的KEY

时间:2012-02-23 17:50:41

标签: berkeley-db

我正在向伯克利数据库中的一个队列写一些固定长度的记录,并获取每个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所以我想知道我在这做什么蠢事?

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

林顿

1 个答案:

答案 0 :(得分:0)

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