Redis 将 Hash 作为哈希表存储在内存中。从本质上讲,从任何哈希表中获取单个条目都是 O(1) 操作。HGETALL 必须一一获取哈希表中的所有条目。所以,它是 O(N)。如果您编写了自己的哈希表并且没有使用 Redis,它也会以这种方式工作。这就是哈希表的工作原理。
\n将哈希表序列化为单个字符串然后保存该字符串不会为您节省任何内容。您要将后端的 O(N) 操作替换为代码中的操作。
\n我总是发现在时间复杂性的讨论中缺少的一点是,它是关于扩展,而不是时间。人们谈论事物“更慢”和“更快”。但这与毫秒无关。O(1) 操作是“恒定时间”而不是更慢。这仅仅意味着每次总是花费相同的时间\xe2\x80\x94。一个函数的复杂度可能是 O(1),但仍然比其他具有 10 亿个条目的 O(N) 函数慢。
\n就 Redis 而言,HGETALL 非常快且O(N)。除非您的哈希中有数千个字段,否则您可能不需要担心它。
\n 归档时间: |
|
查看次数: |
1668 次 |
最近记录: |