何时使用Redis等键/值存储而不是SQL数据库?

时间:2011-09-23 21:43:58

标签: redis

我已经阅读了关于Redis等键/值存储的好东西,但我似乎无法弄清楚什么时候在应用程序中使用它。

说我正在构建一个基于Web的应用程序;我知道我将用于前端,后端,数据库等的堆栈。在某些情况下,我会去“哦,我们还需要Redis for X,Y或Z.”

我希望node.js示例以及非node.js示例。

4 个答案:

答案 0 :(得分:92)

  

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

我建议你阅读包含用例的this教程。由于redis是面向内存的,因此对于经常更新的实时数据非常有用,例如会话存储,状态数据库,统计,缓存及其advanced data structures为许多其他场景提供了多功能性。

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

答案 1 :(得分:59)

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

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

前一位读者的一句话:

  

我之前读过有关Redis的文章,并听过公司如何使用它,但从未完全理解它的用途。读完之后,我实际上可以说我现在了解Redis以及它是如何有用的。令人惊讶的是,在听了这么多关于它之后,它只是一篇相对简单的文章。

文章引用:

  

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

文章触及的用例:

  • 主页上的最新商品详情
  • 排行榜及相关问题
  • 按用户投票和时间排序
  • 实施对项目过期
  • 计算东西
  • 在给定时间内唯一的N项
  • 实时分析正在发生的事件,统计数据,反垃圾邮件或其他任何内容
  • 发布/订阅
  • 队列
  • 缓存

答案 2 :(得分:7)

  • 我很想在实时项目中使用redis。我最近做了 对于一个以前在mysql上构建的gps跟踪系统 数据库中。

    ADVANTAGE

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

答案 3 :(得分:2)

一件事是Redis不是关系数据库。如果您将需要SQL“JOIN”,那么您将不想使用Redis,也不想使用任何其他非关系数据库。 Redis比大多数关系数据库更快。如果您只是要做关键:值对查询,那么您将要使用Redis。