如果我这样做:
client.get("foo", (err, res) => {
console.log(res);
});
Redis服务器中存储着数十亿个密钥,它是否会像仅存储几个密钥一样快地返回数据?
或者我应该使用索引(如果Redis中有索引),就像在MongoDB中查询数据库一样?
答案 0 :(得分:2)
Redis GET命令具有O(1) complexity,这意味着如果有10、10k或1000万,它将始终在相同的时间内获取数据(不计算网络延迟和带宽)。条目。在这种情况下,您将使用Redis一个简单的键值存储。作为内存数据库,它可以像MongoDB那样进行交易。
如果您具有更复杂的数据结构(例如哈希),则可以进行二级索引。查看更多here
答案 1 :(得分:2)
Redis没有键索引。每个典型的键查询都将具有恒定的执行时间O(1)
,因此数据库中是否有一个或数十亿个键都没有关系。
但是,如果您打算搜索除密钥以外的任何内容,则可能需要检查文档中的indexing patterns
Sorted sets as indexes Lexicographically encoded indexes Geospatial indexes IP range indexes Full text search indexes Partitioned indexes
但是,这些都是非关键索引。