【问题标题】:Does Redis uses indexes to get the data?Redis 是否使用索引来获取数据?
【发布时间】:2018-11-27 08:05:39
【问题描述】:

如果我这样做:

client.get("foo", (err, res) => {
  console.log(res);
});

Redis 服务器中存储了数十亿个键,它是否会像只存储几个键一样快速返回数据?

或者我应该使用索引(如果 Redis 中有索引),就像在 MongoDB 中查询数据库一样?

【问题讨论】:

    标签: node.js redis


    【解决方案1】:

    Redis GET 命令有一个O(1) complexity,这意味着如果有 10、10k 或 1000 万个条目,它将始终在相同的时间内获取数据(不包括网络延迟和带宽)。这是您使用 Redis 一个简单的键值存储的情况。内存检索 + 唯一键允许它这样做。

    如果你有更复杂的数据结构,比如哈希,那么你可以做二级索引。查看更多here

    【讨论】:

      【解决方案2】:

      Redis 没有键索引。每个对键的典型查询都会有固定的执行时间O(1),因此数据库中是否有一个或数十亿个键都没有关系。

      但是,如果您打算搜索密钥以外的任何内容,您可能需要查看文档以获取 indexing patterns

      Sorted sets as indexes
      Lexicographically encoded indexes
      Geospatial indexes
      IP range indexes
      Full text search indexes
      Partitioned indexes
      

      但同样,这些都是非关键索引。

      【讨论】:

      • 哈希是关键索引吗?
      • 是的,这就是它们通常的实现方式,但密钥由 redis 自动散列,因此您无需执行任何操作。但是,如果您愿意,您可以将自己的哈希值存储在数据库中。
      猜你喜欢
      • 2021-12-23
      • 1970-01-01
      • 1970-01-01
      • 2019-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多