我一直在学习Node.js所以我决定建立一个简单的广告网络,但我似乎无法决定要使用的数据库。我一直在使用Redis,但我似乎找不到按特定条件查询数据库的方法,而是只能获取键或列表的值或设置在键内。
我错过了什么,或者我应该使用像MongoDB这样更强大的数据库?
答案 0 :(得分:16)
我建议阅读有关Redis的this教程,以了解其概念和数据类型。我也有问题要理解为什么没有类似于其他(没有)SQL数据库的查询支持,直到我阅读了一些文章并尝试测试和比较Redis与其他解决方案。也许它不是适合您的用例的数据库,虽然它非常快并且支持高级数据结构,但是缺少对您来说至关重要的查询。如果您正在寻找一个允许您查询数据的数据库,那么您应该尝试mongodb或riak。
答案 1 :(得分:6)
Redis通常被称为数据 结构服务器,因为键可以 包含字符串,散列,列表,集合 和排序集。
如果能够(易于实现),您应该使用这些原语(字符串,散列,列表,集和排序集)。 Redis的主要优点是闪电般快,但它相当原始key-value store(redis更先进一点)。这也意味着它不能像queried
那样,例如SQL。
使用更高级的商店可能会更容易,例如Mongodb,它是document-oriented database。在这种情况下你做出的权衡就是性能,但是我相信你应该只解决这个问题,如果这个问题成了问题,那可能不会是因为Mongodb也很快,并且它的优点是它可以{{1 }}。我认为最好让proper indexes用于您的查询(阅读>写入)以使其快速。
答案 2 :(得分:2)
我认为主要答案来自数据结构。查看关于NoSQL数据建模的这篇文章,对我来说非常有帮助:NoSql Data Modelling。
关于数据建模的第二篇好文章,以及SQL和NoSQL之间的比较如下:The Relational model anti pattern。