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

yshpjwxd  于 2023-03-17  发布在  Redis
关注(0)|答案(4)|浏览(144)

我读过一些关于键/值存储的好东西,比如Redis,但是我似乎不知道什么时候应该在应用程序中使用它。
假设我正在设计一个基于Web的应用程序;我知道前端、后端、数据库等要使用什么堆栈。有哪些场景我会说“哦,我们还需要Redis来支持X、Y或Z”。
我希望能看到node.js示例以及非node.js示例。

v6ylcynt

v6ylcynt1#

我似乎不知道什么时候该在应用程序中使用它。
我建议你阅读this教程,其中也包含了一些使用案例,因为redis是面向内存的,它非常适合频繁更新的实时数据,比如会话存储,状态数据库,统计数据,缓存,它的advanced data structures为许多其他场景提供了通用性。
然而,Redis并不是传统关系数据库的NoSQL替代品,因为它不支持RDBMS世界的许多标准功能,比如查询数据,这可能会降低速度。替代品是MongoDB或CouchDB等文档数据库,而Redis非常擅长补充特定功能,在这些功能中,速度和对高级数据结构的支持非常方便。

vecaoik1

vecaoik12#

我认为没有什么比这篇文章更能解释Redis的用例了:http://oldblog.antirez.com/post/take-advantage-of-redis-adding-it-to-your-stack.html
我打赌你会有一个“啊哈!时刻”。)
引自之前一位读者的话:
我以前读过关于Redis的书,也听说过很多公司是如何使用它的,但从来没有完全理解过它的用途。阅读了这篇文章后,我可以说我现在理解了Redis,也理解了它是如何有用的。令人惊讶的是,在听了这么多关于它的文章后,我只需要一篇相对简单的文章。
文章中的一段话:
Redis与其他数据库解决方案有很多不同之处:它使用内存作为主存储支持,而磁盘只用于持久化,数据模型非常独特,它是单线程的等等。我认为另一个很大的区别是,为了在你的生产环境中利用Redis,你不需要切换到Redis。你可以使用它来做以前不可能做的新事情,或者修复旧问题。
本文涉及的使用情形:

  • 减慢主页中的最新项目列表
  • 排行榜及相关问题
  • 按用户投票和时间排序
  • 实施项目到期
  • 数东西
  • 给定时间内的N个唯一项目
  • 真实的分析正在发生的事情,统计,反垃圾邮件,或任何东西
  • 发表/订阅
  • 队列
  • 缓存
643ylb08

643ylb083#

1.我很想在真实的项目上使用Redis。我最近为一个GPS跟踪系统做了这个,这个系统以前是建立在MySQL作为数据库的。
优势
1.每次追踪器广播数据时,我不需要打开mysql连接并存储在上面。我们可以将其保存在redis上,然后使用其他进程迁移到mysql。这将避免多个追踪器并发连接到mysql。
1.我可以发布所有这些gps数据,其他客户端(javascript/android)可以使用基于redis的消息队列真实的订阅
1.我可以触发真实的警报

j9per5c4

j9per5c44#

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

相关问题