当Redis
hashes我最后往往存储相同的密钥的99%的工作:Redis的哈希值:项名称压缩
HGETALL object:someID {
"id": "123",
"someSpecificKeysWithLongNames": "..."
}
如何Redis的存储哈希?是否能够减少键名所需的分配空间,还是应该使用短键来减少开销?
HGETALL myobject {
"i": "123",
"s": "..."
}
当Redis
hashes我最后往往存储相同的密钥的99%的工作:Redis的哈希值:项名称压缩
HGETALL object:someID {
"id": "123",
"someSpecificKeysWithLongNames": "..."
}
如何Redis的存储哈希?是否能够减少键名所需的分配空间,还是应该使用短键来减少开销?
HGETALL myobject {
"i": "123",
"s": "..."
}
Redis 2.2和更高版本能够使用较少的内存用于多种数据类型(包括散列)。
退房这样的解释:http://redis.io/topics/memory-optimization
你也可以看看这里的源代码,看看它是如何工作的:
Redis的不以任何版本的压缩键名,无论基础数据结构。如果你的钥匙是相同的,你将受益于使用较短的钥匙。
我建议在实际重构之前,通过一些经验性的计算来找出节省。根据你的例子,你至少要保存len(someSpecificKeysWithLongNames) - 每个散列的len(s)个字节。乘以你拥有或计划拥有的哈希数量,然后做一个成本收益来看看这些节省是否值得这种痛苦。