【发布时间】:2018-11-27 08:05:39
【问题描述】:
如果我这样做:
client.get("foo", (err, res) => {
console.log(res);
});
Redis 服务器中存储了数十亿个键,它是否会像只存储几个键一样快速返回数据?
或者我应该使用索引(如果 Redis 中有索引),就像在 MongoDB 中查询数据库一样?
【问题讨论】:
如果我这样做:
client.get("foo", (err, res) => {
console.log(res);
});
Redis 服务器中存储了数十亿个键,它是否会像只存储几个键一样快速返回数据?
或者我应该使用索引(如果 Redis 中有索引),就像在 MongoDB 中查询数据库一样?
【问题讨论】:
Redis GET 命令有一个O(1) complexity,这意味着如果有 10、10k 或 1000 万个条目,它将始终在相同的时间内获取数据(不包括网络延迟和带宽)。这是您使用 Redis 一个简单的键值存储的情况。内存检索 + 唯一键允许它这样做。
如果你有更复杂的数据结构,比如哈希,那么你可以做二级索引。查看更多here
【讨论】:
Redis 没有键索引。每个对键的典型查询都会有固定的执行时间O(1),因此数据库中是否有一个或数十亿个键都没有关系。
但是,如果您打算搜索密钥以外的任何内容,您可能需要查看文档以获取 indexing patterns
Sorted sets as indexes Lexicographically encoded indexes Geospatial indexes IP range indexes Full text search indexes Partitioned indexes
但同样,这些都是非关键索引。
【讨论】: