什么时候使用一个键/值存储,如Redis代替/沿着SQL数据库?

我读过一些关于键/值存储的很棒的东西,比如Redis,但我似乎不知道什么时候应该在应用程序中使用它。

假设我正在构建一个基于web的应用程序;我知道我将在前端、后端、数据库等方面使用什么堆栈,在哪些情况下我会说“哦,我们还需要Redis来实现X、Y或z”。

我很欣赏node.js的例子以及非node.js的例子。

86151 次浏览

Redis不是一个关系数据库。如果你需要一个SQL“JOIN”,那么你不会想要使用Redis,也不会使用任何其他非关系数据库。Redis比大多数关系数据库都要快。如果你只打算做键值对查询,那么你会想要使用Redis。

我似乎不知道什么时候该在应用程序中使用它。

我建议你阅读教程,其中也包含用例。由于redis是相当面向内存的,它非常适合频繁更新的实时数据,如会话存储,状态数据库,统计数据,缓存和它的高级数据结构提供了许多其他场景的通用性。

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

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

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

引用之前一位读者的话:

我以前读过Redis,也听说过公司是如何使用它的,但从来没有完全理解它的目的。读完这篇文章后,我可以说我现在理解Redis了,它是多么有用。令人惊讶的是,在听了这么多关于它的内容之后,我只花了一篇相对简单的文章。

摘自文章:

Redis在许多方面与其他数据库解决方案不同:它使用内存作为主存储支持,磁盘仅用于持久性,数据模型非常独特,它是单线程的等等。我认为另一个很大的区别是,为了在你的生产环境中利用Redis,你不需要切换到Redis。你可以使用它来做以前不可能做的新事情,或者是为了解决旧问题。

本文涉及的用例:

  • 放慢最新项目在您的主页列表
  • 排行榜和相关问题
  • 按用户投票和时间排序
  • 在物品上实现过期
  • 计数的东西
  • 在给定的时间内唯一N个项目
  • 实时分析正在发生的事情,统计,反垃圾邮件,或其他
  • 发布/订阅
  • 队列
  • 缓存
    我很喜欢在实时项目中使用redis。我最近做过 对于一个GPS跟踪系统,这是以前建立在mysql作为一个 数据库。< / p >

    优势

      每次跟踪广播数据我不需要打开mysql连接和存储在它。我们可以把它保存在redis上,然后再迁移 到mysql使用其他进程。这将避免并发 从多个跟踪器连接到mysql。
    1. 我可以发布所有这些gps数据和其他客户端(javascript/android)可以使用基于redis的消息队列实时订阅
    2. 我可以触发实时警报
    3. 李< / ol > < / >