什么时候使用SQL数据库的Redis替代键/值存储?


166

我已经阅读了有关键/值存储(例如Redis)的很棒的文章,但是我似乎无法弄清楚何时该在应用程序中使用它。

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

我会喜欢node.js示例以及非node.js示例。


Answers:


102

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

我建议您阅读教程,其中也包含用例。由于redis是面向内存的,因此对于频繁更新的实时数据(例如会话存储,状态数据库,统计信息,缓存及其高级数据结构)非常有用许多其他场景提供了多功能性。

但是,Redis并不是NoSQL的经典关系数据库的替代品,因为它不支持RDBMS世界的许多标准功能,例如查询数据可能会减慢其速度。替代品是文档数据库,例如MongoDB或CouchDB,redis非常擅长补充特定功能,在这些功能中,对高级数据结构的速度和支持非常方便。


3
您链接到的教程很棒!
克里斯·艾布拉姆斯

5
我使用该教程网站网址进行了快速的Google搜索,并获得了最高的成功-slideshare.net/dvirsky/introduction-to-redis-version-2
Paul,

66

我认为没有什么比本文能更好地说明Redis的用例了:http : //antirez.com/post/take-advantage-of-redis-adding-it-to-your-stack.html

我敢打赌,你会喝醉的!片刻。;)

先前读者的话:

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

文章引用:

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

本文涉及的用例:

  • 您首页中的最新商品列表速度缓慢
  • 排行榜和相关问题
  • 按用户投票和时间排序
  • 机具过期
  • 数东西
  • 在给定的时间内唯一N个物品
  • 实时分析发生的情况,统计数据,反垃圾邮件或其他内容
  • 发布/订阅
  • Queue列
  • 快取

这篇文章是非常有用的,我有什么,我想知道
何水星

@ Zenw0lf redis仍然是简单缓存的最佳选择吗?您的帖子来自2011年,所以不确定我是否应该使用其他内容。
Moondra

@Moondra是的,该项目仍然非常活跃,其创建者经常发布。对于不同的使用场景,它仍然是一个极好的项目!
zenw0lf

@ zenw0lf不错的文章,但在某些用例中我还是有些困惑。例如“最新项目”用例,为什么在这种情况下添加Redis更好?我们将数据库中的内容添加到特定表中只是为了具有用户ID,comment(id)和/或时间戳,并直接使用它。这不会一样吗?
Tony Lin

1
@TonyLin两者都很快,因为它在内存中,而且因为Redis还具有很好的尖端数据模型实现,以帮助其尽其所能。
zenw0lf

9
  • 我很想在实时项目中使用redis。我最近做了一个gps跟踪系统,该系统以前基于mysql作为数据库构建。

    优点

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

3

一件事就是Redis不是关系数据库。如果您将需要SQL“ JOIN”,那么您将不希望使用Redis或任何其他非关系数据库。尽管Redis比大多数关系数据库要快。如果只打算执行key:value对查询,那么您将要使用Redis。


因此,例如,使用redis来获取有关用户会话的信息会更好,这样可以更快地访问名称,电子邮件,ID等?
克里斯·艾布拉姆斯

我会这样认为。我认为,京都内阁对此会更快。
EhevuTov 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.