(在mongo用户讨论组https://groups.google.com/d/topic/mongodb-user/i1ge4bNiMgM/discussion提问)
嗨,我想使用MongoDB作为消息队列,并考虑为此使用有上限的集合可定制游标。我知道可定制光标可用于按插入顺序访问文档,但是
谢谢
有一个来自AOL/About的演示。2012年4月,我在硅谷MUG的“MongoDB as message queue”上向您介绍,您可能会发现这对规划您的方法很有帮助。
可定制的光标尾随有上限的集合的末尾,并且仅以自然顺序排列。如果需要排序顺序,则需要使用索引查询。
请阅读创建可定制光标留档页面了解更多信息。
C#驱动程序是否完全支持尾随游标?
是的,在1.1C#驱动程序中实现了可定制的游标支持(参见:html" target="_blank">代码示例)。
我希望我的队列能够保证单次传递——我的意思是,如果两个客户端试图读取来自同一个集合的消息,他们就不能“消费”同一条消息。我认为findAndModify可以实现这一点,但如何使用尾随光标实现这一点呢?
有几种方法:
有关原子操作的更多信息,请参阅MongoDB手册中的隔离操作顺序。
有人知道在Mongo3中更新封顶收藏的方法吗。2.我让它在2分钟内工作。我更新了一个收藏,基本上删除了它的所有内容,所以我知道它已经被处理过了。这样就会过时。 当我在3.2中执行同样的操作时,我在命令行上会出现以下错误。 无法更改封顶集合中文档的大小:318!=40 在这里,你可以看到我正在将文档从318字节缩减到40字节。 有办法做到这一点吗?
问题内容: 是否有人在Redis中实现了任何形式的有上限的数据结构?我正在构建类似新闻提要的东西。提要将非常频繁地被操纵和读取,并且将其保存在Redis的分类集中对于我的用例来说是便宜又完美的。唯一的问题是,每个提要仅需要n个项,并且我担心内存溢出,因此我想确保每个提要都不会超过n个项。用Lua在Redis中创建一个有上限的排序集合似乎很简单: update_feed.lua看起来像(未经测试):
队列集合 freeRTOS通过队列集合(Queue Sets)允许任务同时阻塞在多个队列或者信号量上。队列和信号量以集合的形式组织。 注意:尽管在集成第三方的服务时,有时阻塞在多个队列上是必要的,但是还有很多其他的设计模式可以高效完成相同的功能,详细见文章底部部分内容。 使用队列集合 队列集合在使用方法上和select()这类API函数很像,它们都是标准的Berkeley sockets netw
主要内容:创建固定集合,固定集合查询固定集合是具有固定大小的循环集合,遵循插入顺序,以支持高性能的创建、读取和删除操作。通过循环,当分配给集合的固定大小用完时,它将删除集合中最旧的文档,而不提供任何显式命令。 如果更新导致文档大小增加,则固定集合会限制对文档的更新。由于固定集合是按磁盘存储的顺序存储文档的,因此可以确保文档大小不会增加磁盘上分配的大小。固定集合最适合存储日志信息、缓存数据或任何其他高容量数据。 创建固定集合 要创建一
问题内容: 列表,队列和集合之间有什么区别? 问题答案: 简单来说: 一个 列表 是一个对象,在同一个对象可能出现不止一次的有序列表。例如:[1,7,1,3,1,1,1,5]。谈论列表中的“第三要素”是有意义的。您可以在列表中的任何位置添加元素,在列表中的任何位置更改元素,或从列表中的任何位置删除元素。 一个 队列 也定购,但你永远只触摸元件的一端。所有元素都在队列的“结尾”处插入,并从队列的“开
问题内容: 如何同时在多个对象上“选择” ? Golang的频道具有所需的功能: 其中第一个要解除阻塞的通道执行相应的块。如何在Python中实现? 更新0 根据tux21b答案中给出的链接,所需的队列类型具有以下属性: 多生产者/多消费者队列(MPMC) 提供每个生产者FIFO / LIFO 当队列为空/完整的消费者/生产者被阻止时 此外,渠道可能会被阻塞,生产者将阻塞,直到消费者取回该物品为止