mongodb订阅发布模型_如何使用MongoDB创建发布/订阅应用程序? 介绍

mongodb订阅发布模型

在本文中,我们将看到如何创建发布/订阅应用程序(消息,聊天,通知),并且该应用程序完全基于MongoDB(没有任何消息代理,如RabbitMQ,JMS等)。

因此,需要做些什么才能实现这样的目标:

  • 应用程序“发布”消息。 就我们而言,我们只是将文档保存到MongoDB中
  • 另一个应用程序或线程订阅这些事件,将自动接收消息。 在我们的案例中,这意味着应用程序应自动从MongoDB中接收新创建的文档

通过MongoDB的一些非常酷的功能,所有这些都是可能的: 上限集合和可尾游标

上限集合和尾光标

如您在文档中所看到的,上限集合是固定大小的集合,其工作方式类似于循环缓冲区:一旦集合填充了其分配的空间,它就会通过覆盖最旧的文件为新文件腾出空间。

可以使用Tailable游标查询MongoDB封顶的集合,这类似于unix tail -f命令。 您的应用程序继续将文档插入集合中,以对其进行检索。 我也喜欢称其为“连续查询”。 现在我们已经了解了基础知识,让我们实现它。

建立一个非常基本的应用程序

创建收藏

首先要做的是创建一个新的有上限的集合:

$> mongo

use chat

db.messages.drop()

db.createCollection('messages', { capped: true, size: 10000 })

db.messages.insert({"type":"init"});

为简单起见,我使用MongoDB Shell在聊天数据库中创建消息集合。

您可以在第7行上看到如何创建具有上限的集合,其中包含2个选项:

  • capped:true:这个很明显
  • size:10000:创建上限集合时,这是必选选项。 这是最大大小(以字节为单位)。 (将提高到256的倍数)

最后,在第9行上,我插入了一个虚拟文档,这也是强制执行的,以便能够使可尾游标起作用。

编写申请<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MongoDB和Redis是两种不同类型的数据库,它们在使用场景上有所区别。 MongoDB是一种面向文档的NoSQL数据库,适用于存储和查询半结构化数据。它通常用于以下场景: 1. 大规模数据存储和分析:MongoDB提供高度可扩展性和灵活的数据模型,适用于存储海量数据和复杂查询。 2. 高度动态的数据模型MongoDB的文档模型允许数据结构和字段的灵活性,适用于应对数据模式频繁变化的情况。 3. 实时数据处理:MongoDB支持实时数据写入和查询,适用于需要快速响应和实时更新的应用场景。 4. 复杂的查询和聚合操作:MongoDB提供强大的查询和聚合功能,适用于需要复杂数据分析和处理的场景。 Redis是一种内存中的键值存储数据库,适用于高性能和缓存相关场景。它通常用于以下场景: 1. 缓存:Redis可以将常用的数据缓存在内存中,提高读取速度并减轻后端数据库的负载。 2. 高速数据访问:Redis以内存为基础,读写速度非常快,适用于需要快速读取和写入数据的场景。 3. 发布/订阅系统:Redis提供了强大的发布订阅功能,适用于构建实时消息系统或事件驱动的应用。 4. 计数器和排行榜:Redis支持原子操作和排序功能,适用于实时计数和排行榜等场景。 总之,MongoDB适用于大规模数据存储和复杂查询,而Redis适用于高性能缓存和快速数据访问。根据具体需求和数据特点,可以选择合适的数据库或结合两者的优势来满足应用需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值