Did*_*zia 156
Redis和MongoDB可以一起使用,效果很好.一个以运行MongoDB和Redis(以及MySQL和Sphinx)而闻名的公司是Craiglist.请参阅Jeremy Zawodny的演讲.
MongoDB对于持久的,面向文档的,以各种方式索引的数据很有意义.对于易失性数据或对延迟敏感的半持久性数据,Redis更有趣.
以下是在MongoDB之上具体使用Redis的几个示例.
2.2之前的MongoDB还没有过期机制.上限集合无法真正用于实现真正的TTL.Redis具有基于TTL的过期机制,可以方便地存储易失性数据.例如,用户会话通常存储在Redis中,而用户数据将在MongoDB中存储和索引.请注意,MongoDB 2.2在集合级别引入了一个低精度的过期机制(例如用于清除数据).
Redis提供了方便的set数据类型及其相关操作(并集,交集,多个集合上的差异等).在此功能的基础上实现基本的分面搜索或标记引擎非常容易,这是MongoDB更传统的索引功能的一个有趣的补充.
Redis支持在列表上有效阻止弹出操作.这可用于实现ad-hoc分布式排队系统.它比MongoDB tailable游标IMO更灵活,因为后端应用程序可以通过超时监听多个队列,以原子方式将项目转移到另一个队列等等......如果应用程序需要一些排队,那么将队列存储在Redis中是有意义的,并将持久性功能数据保留在MongoDB中.
Redis还提供pub/sub机制.在分布式应用程序中,事件传播系统可能是有用的.对于Redis来说,这也是一个很好的用例,而持久性数据保存在MongoDB中.
因为使用MongoDB设计数据模型比使用Redis(Redis更低级别)更容易,所以从MongoDB的主要持久数据灵活性和Redis提供的额外功能(低延迟)中受益是很有趣的. ,项目到期,队列,发布/订阅,原子块等...).这确实是一个很好的组合.
请注意,永远不要在同一台机器上运行Redis和MongoDB服务器.MongoDB内存设计为交换出来,而Redis则不是.如果MongoDB触发了一些交换活动,Redis的性能将是灾难性的.它们应该在不同的节点上隔离.
小智 23
显然,有远远更多的差异比这个,但极高的概述:
对于用例:
技术上:
有一些重叠,但使用两者是非常常见的.原因如下:
Redis的可以作为一个传统的数据存储的替代品,但它是最常用的与其他正常的"长"数据存储,如蒙戈和PostgreSQL,MySQL的,等等.
| 归档时间: |
|
| 查看次数: |
34158 次 |
| 最近记录: |