【问题标题】:Querying with Redis?用 Redis 查询?
【发布时间】:2011-07-20 04:28:24
【问题描述】:

我一直在学习 Node.js,所以我决定制作一个简单的广告网络,但我似乎无法决定要使用的数据库。我一直在搞 Redis,但似乎找不到按特定条件查询数据库的方法,而是只能获取键或列表的值或在键中设置。

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

【问题讨论】:

  • mongodb支持高级查询,并不代表它更健壮。
  • 许多数据库允许按特定条件进行搜索
  • 无法在 Redis 中进行高级查询。该工具专为不同的任务而设计

标签: node.js mongodb redis nosql


【解决方案1】:

我建议阅读this 关于 Redis 的教程,以了解其概念和数据类型。我也很难理解为什么没有类似于其他(没有)SQL 数据库的查询支持,直到我阅读了几篇文章并尝试测试 Redis 并将其与其他解决方案进行比较。也许它不是适合您的用例的数据库,虽然它非常快并且支持高级数据结构,但缺少对您来说至关重要的查询。如果您正在寻找一个允许您查询数据的数据库,那么您应该尝试mongodbriak

【讨论】:

  • 感谢您的信息。所以基本上,如果我想做任何类型的查询,我必须建立自己的索引?
  • 类似的东西,但你仍然缺少某种查询语言。
【解决方案2】:

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

如果能够(易于实现),您应该使用这些原语(字符串、散列、列表、集合和排序集)。 Redis 的主要优点是闪电般的速度,但它相当原始key-value store(redis 更高级一点)。这也意味着它不能像 SQL 那样是queried

使用更高级的存储可能会更容易,例如 Mongodb,它是 document-oriented database。在这种情况下你所做的权衡是性能,但我相信你应该只在这成为一个问题时解决这个问题,它可能不会因为 Mongodb 也非常快并且具有它可以是queried 的优势.我认为建议您使用proper indexes 进行查询(读取>写入)以使其更快。

【讨论】:

  • 好的,所以我注意到 Riak 有查询功能,但它是一个键值存储,而不是像 Mongo 这样的面向文档的数据库。一个比另一个更适合这份工作吗?
  • 来自 Riak:“Riak 依靠 MapReduce 执行超出基本键/值存储模型限制的查询。”。 Redis 没有 MapReduce 来执行此操作。老实说我对Riak没有任何经验,但是传统的Key-value存储无法查询数据库...
【解决方案3】:

我认为主要的答案来自数据结构。查看这篇关于 NoSQL 数据建模的文章,对我来说非常有帮助:NoSql Data Modelling

关于数据建模以及 SQL 和 NoSQL 比较的第二篇好文章如下:The Relational model anti pattern

【讨论】:

    猜你喜欢
    • 2015-12-18
    • 2022-01-04
    • 2016-08-28
    • 2012-07-02
    • 2011-03-25
    • 2020-05-10
    • 2016-04-29
    • 2018-08-19
    • 1970-01-01
    相关资源
    最近更新 更多