hyperv 发表于 2015-11-12 14:09:00

Redis存储key filed压缩测试

  针对redis hmset存储结构中key 和filed占用内存比例的测试,运行环境如下
  6379端口存储压缩前数据
  6381端口存储压缩后数据
  运行前均flushdb清空redis所有数据
  
  运行数据如下,10W keys
  
  一、针对filed压缩测试
  
  压缩前


  
  压缩后

  
  测试结果:
  压缩前

  压缩后
  

  结论:可以看到10W条记录压缩前共使用25.54M内存,压缩后共使用19.44M内存,压缩比例 23.9%
  
  二、针对key压缩
  将user_info: 压缩为u:
  
  测试结果
  仅仅压缩key

  key filed 均压缩

  
  结论:可以看出,仅仅压缩key就可以得到 6% 的压缩空间,如果对key filed均压缩可以达到30% 的压缩比例,十分可观
  
  三、这对key进一步压缩,对id进行进制转换压缩
  $this->redis('redis_6381')->hMSet('u:' . base_convert($i, 10,36), $user_info);
  key filed均压缩

  结果是非常遗憾的,内存一毛钱也没有省,看来redis对key已经做过一些处理了
  那我们对filed的value 的int类型做处理会如何呢,结果就不贴了,遗憾的是不但没有减少内存反而增大了内存空间变为了19M了,其实也很容易理解,redis对数值类型应该做过特殊的处理,如果对filed做进制转换,结果就变成了字符串,不利于redis自身的优化
         版权声明:本文为博主原创文章,未经博主允许不得转载。
页: [1]
查看完整版本: Redis存储key filed压缩测试