使用Redis进行查询?

18

我一直在学习Node.js,所以我决定制作一个简单的广告网络系统,但是我似乎无法确定要使用哪个数据库。我已经尝试使用Redis,但我似乎找不到按特定条件查询数据库的方法,而只能获取键或键内部的列表或集合的值。

我是否遗漏了什么,或者应该使用更强大的数据库,如MongoDB?


7
尽管MongoDB支持高级查询,但这并不意味着它更加健壮。 - Joshua Partogi
1
许多数据库允许按特定条件进行搜索。 - Andrei Andrushkevich
Redis 没有高级查询功能。这个工具只是为不同的任务简单设计的。 - Dan
3个回答

20

我建议阅读这个Redis教程,以理解其概念和数据类型。在尝试测试和比较Redis与其他解决方案之前,我也遇到了理解为什么它没有类似于其他(非)SQL数据库的查询支持的问题。也许对于您的用例来说它不是合适的数据库,尽管它非常快速并支持高级数据结构,但缺乏对您来说至关重要的查询功能。如果您正在寻找允许您查询数据的数据库,则应尝试mongodbriak


1
谢谢提供的信息。所以基本上如果我想进行任何查询,我都必须建立自己的索引? - Kevin McTigue
有些类似,但你仍然缺少某种查询语言。 - yojimbo87

7

Redis通常被称为数据结构服务器,因为键可以包含字符串、哈希、列表、集合和有序集合。

如果可以(易于实现),您应该使用这些基元(字符串、哈希、列表、集合和有序集合)。 Redis的主要优点是它非常快速,但它相对原始key-value store(Redis稍微先进一些)。这也意味着它不能像SQL那样进行查询

也许使用更高级的存储方式会更容易,例如面向文档的数据库Mongodb(链接)。在这种情况下,你需要权衡性能,但我认为只有在出现问题时才需要考虑这个问题,因为Mongodb也非常快速,并且具有可以进行查询的优势。我认为为了使查询(读>写)快速,建议为其添加适当的索引


好的,我注意到Riak有查询功能,但它是一个键值存储而不是像Mongo这样的面向文档的数据库。哪个更适合这项工作? - Kevin McTigue
2
从Riak:“Riak依赖于MapReduce执行超出基本键/值存储模型限制的查询。” Redis没有MapReduce来做这个。老实说,我没有任何关于Riak的经验,但是传统的键值存储无法查询数据库... - Alfred

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接