我读过一些关于键/值存储的很棒的东西,比如Redis,但我似乎不知道什么时候应该在应用程序中使用它。
假设我正在构建一个基于web的应用程序;我知道我将在前端、后端、数据库等方面使用什么堆栈,在哪些情况下我会说“哦,我们还需要Redis来实现X、Y或z”。
我很欣赏node.js的例子以及非node.js的例子。
我读过一些关于键/值存储的很棒的东西,比如Redis,但我似乎不知道什么时候应该在应用程序中使用它。
假设我正在构建一个基于web的应用程序;我知道我将在前端、后端、数据库等方面使用什么堆栈,在哪些情况下我会说“哦,我们还需要Redis来实现X、Y或z”。
我很欣赏node.js的例子以及非node.js的例子。
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
我打赌你会有一个啊哈!的时刻。;)
引用之前一位读者的话:
我以前读过Redis,也听说过公司是如何使用它的,但从来没有完全理解它的目的。读完这篇文章后,我可以说我现在理解Redis了,它是多么有用。令人惊讶的是,在听了这么多关于它的内容之后,我只花了一篇相对简单的文章。
摘自文章:
Redis在许多方面与其他数据库解决方案不同:它使用内存作为主存储支持,磁盘仅用于持久性,数据模型非常独特,它是单线程的等等。我认为另一个很大的区别是,为了在你的生产环境中利用Redis,你不需要切换到Redis。你可以使用它来做以前不可能做的新事情,或者是为了解决旧问题。
本文涉及的用例:
放慢最新项目在您的主页列表 排行榜和相关问题 按用户投票和时间排序 在物品上实现过期 计数的东西 在给定的时间内唯一N个项目 实时分析正在发生的事情,统计,反垃圾邮件,或其他 发布/订阅 队列 缓存
I would love to use redis on the real time projects. I did recently for one gps tracking system which was previously built on mysql as a database. ADVANTAGE Every time the tracker broadcast data I do not need to open mysql connection and store on it. We can save it on redis and later migrate to mysql using some other process. This will avoid concurrent connection from mutiple tracker to mysql. I can publish all those gps data and other clients(javascript/android) can subscribe in a real time using message queue based on redis I can trigger real time alerts