为什么Redis散列桶保存磁盘?

为什么Redis散列桶保存磁盘?,redis,zipmap,Redis,Zipmap,我读了这个博客: Instagram的伙计们做得很好,他们精心设计了如何保存磁盘。但是,我想知道zipmap哈希桶可以节省内存的具体原因?是不是因为您不需要分配很多长类型,而只需要int类型 谢谢大家。这里要了解的主要问题是指针占用了很多空间。如果要序列化一个散列并将其作为一个字符串保留,并且没有键值指针,则会节省大量空间,因为这将使每对指针从一个指针变为0个指针 Redis是一种内存中的数据存储,它希望帮助您在不严重影响性能的情况下尽可能节省空间。为了实现这一点,它将简单地序列化小散列,并在执

我读了这个博客:

Instagram的伙计们做得很好,他们精心设计了如何保存磁盘。但是,我想知道zipmap哈希桶可以节省内存的具体原因?是不是因为您不需要分配很多长类型,而只需要int类型


谢谢大家。

这里要了解的主要问题是指针占用了很多空间。如果要序列化一个散列并将其作为一个字符串保留,并且没有键值指针,则会节省大量空间,因为这将使每对指针从一个指针变为0个指针


Redis是一种内存中的数据存储,它希望帮助您在不严重影响性能的情况下尽可能节省空间。为了实现这一点,它将简单地序列化小散列,并在执行散列操作时完全搜索它们。实际上这是O(n),但由于散列很小,因此在节省大量内存的同时不会影响性能。一旦散列变大,Redis将把它转换成实际的散列,它将开始占用更多的空间,但现在有了常规的散列O(1)查找、写入和删除时间。因此,Instagram工程师们得出的结论是,他们可以将此转换点设置为高于默认值,以节省更多空间,但要以更高的CPU负载为代价。对他们来说,这是一个很好的交易。我强烈建议您阅读更多信息。

谢谢Eli。这是一个很好的答案!我意识到这是一个老问题,但我发现Instagram的博客文章真的很有帮助。我现在正在做类似的事情,链接现在已经失效了。如果有人知道一个新的位置或有一个PDF版本,我会非常感激。