何时使用 Redis 等键/值存储来代替/与 SQL 数据库一起使用?

问题描述 投票:0回答:4

我读过有关键/值存储(例如 Redis)的精彩文章,但我似乎不知道何时该在应用程序中使用它。

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

我希望获得 Node.js 示例以及非 Node.js 示例。

redis
4个回答
129
投票

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

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

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


81
投票

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

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

引用一位以前的读者的话:

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

文章引用:

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

文章涉及的用例:

  • 主页中的最新商品列表速度缓慢
  • 排行榜及相关问题
  • 按用户投票和时间排序
  • 对物品实施过期
  • 数东西
  • 在给定时间内独特的 N 个项目
  • 实时分析正在发生的事情,用于统计、反垃圾邮件或其他
  • 发布/订阅
  • 队列
  • 缓存

12
投票
  • 我很想在实时项目中使用 Redis。我最近做了 对于一个 GPS 跟踪系统,该系统之前是在 mysql 上构建的 数据库。

    优势

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

7
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.