Hri*_*sto 14 compression redis
更详细一点:我们已经尝试充分利用zipmaps,ziplists等,我想知道这些表示是否已经压缩,或者只是序列化的哈希和列表; 压缩会显着减少内存使用量吗?
此外,应用服务器层的压缩开销是否会因网络使用率降低而抵消?StackOverflow的经验表明它有什么意义吗?
简而言之,对于短弦和长弦都有意义吗?
The*_*heo 16
Redis不会压缩您的值,如果您自己压缩它们,则很大程度上取决于您要存储的字符串的大小.对于大字符串,数百K以及更多它可能值得客户端额外的CPU周期,就像您在提供网页时一样,但对于较短的字符串,这可能是浪费时间.短弦通常不会压缩太多,因此增益太小.
小智 7
有一种实用的方法来获得良好的压缩,即使对于非常小的字符串(50字节!) -
如果您的值彼此有些相似 - 例如,它们是几个相关对象类的JSON表示 - 您可以根据一些示例文本预先计算压缩器/解压缩器字典.
这听起来很复杂,但它在实践中很简单 - 并且使用正确的包装器代码来处理它也更简单.
这是一个Python实现:
https://github.com/internetarchive/openlibrary/blob/master/openlibrary/utils/compress.py
这是压缩特定字符串类的包装器:(简短的JSON记录)
https://github.com/internetarchive/openlibrary/blob/master/openlibrary/utils/olcompress.py
一个问题是:要有效地执行此操作,您的压缩库必须支持"克隆"内部状态.(Python库可以)你可以通过在压缩时添加示例文本来实现类似的东西,但这意味着需要额外的计算成本.
感谢solrize这个很棒的技巧.