何时使用键/值存储(如Redis)而不是/在SQL数据库的旁边?

我已经阅读了关于Redis等关键/价值商店的很棒的东西,但我似乎无法弄清楚什么时候可以在应用程序中使用它。

假设我正在构build一个基于Web的应用程序; 我知道我将用于前端,后端,数据库等什么堆栈。什么是我会去的一些场景“哦,我们还需要Redis的X,Y或Z.

我将不胜感激node.js示例以及非node.js示例。

我似乎无法弄清楚什么时候可以在应用程序中使用它。

我build议你阅读本教程,其中也包含用例。 由于redis是相当面向内存的,所以对于经常更新的实时数据(例如会话存储,状态数据库,统计数据,caching)以及它的高级数据结构提供了许多其他场景的多function性。

然而,Redis不是经典关系数据库的NoSQL替代品,因为它不支持RDBMS世界的许多标准function,例如查询数据,这可能会降低速度。 更换是像MongoDB或CouchDB这样的文档数据库,redis在补充高级数据结构的速度和支持方便的特定function方面非常出色。

我认为没有比这篇文章更好地解释Redis的用例: http : //antirez.com/post/take-advantage-of-redis-adding-it-to-your-stack.html

我敢打赌,你会有一个哈哈! 时刻 。 ;)

以前的读者引用:

之前我已经阅读过有关Redis的内容,听说过公司如何使用它,但从来没有完全明白它的目的。 阅读完本文之后,我可以说我明白Redis以及它的用处。 令人惊讶的是,听了这么多后,它只是一个相对简单的文章。

有一点是Redis不是关系型数据库。 如果你将需要一个SQL“join”,那么你不会想要使用Redis,也不需要其他非关系数据库。 Redis比大多数关系数据库更快。 如果你只是做关键:值对查询,那么你会想要使用Redis。

  • 我很乐意在实时项目中使用redis。 我最近做了一个gps跟踪系统,这个系统以前是以mysql作为数据库的。

    优点

    1. 每次跟踪广播数据我不需要打开mysql连接并存储在它上面。 我们可以将其保存在redis上,然后使用其他进程迁移到mysql。 这将避免从多个跟踪器到MySQL的并发连接。
    2. 我可以发布所有这些GPS数据和其他客户端(JavaScript / Android)可以实时订阅。
    3. 我可以触发实时警报