在保存一些数据到redis中的时候,如果数据量非常大,无疑会占用过多的服务器内存,影响服务器性能,这时我们不妨先压缩后再写入到redis中
读取内容的时候,可以先解压然后再使用。压缩的方法是php提供的,一个是bzcompress()方法,一个是gzcompress()方法,那么哪一个更优秀呢?
我们来测试一下,以下是php代码:
<?php header('Content-Type:text/html; charset=utf-8'); $input = file_get_contents('/tmp/debug.log'); echo '内容长度:'.strlen($input); echo '<br/>'; $start_time = microtime(TRUE); $input_compressed = bzcompress($input,6); echo 'after compressing,time interval:'.(microtime(TRUE)-$start_time).', length:', strlen($input_compressed).'<br/>'; $input_uncompressed = bzdecompress($input_compressed); echo 'after uncompressing,length:'.strlen($input_uncompressed).'<br/>'; $start_time = microtime(TRUE); $input_compressed = gzcompress($input,6); echo 'after compressing,time interval:'.(microtime(TRUE)-$start_time).', length:', strlen($input_compressed).'<br/>'; $input_uncompressed = gzuncompress($input_compressed); echo 'after uncompressing,length:'.strlen($input_uncompressed).'<br/>';
执行之后,结果如下,debug.log文件有11M的内容:
内容长度:11190138
after compressing,time interval:1.1139051914215, length:359866
after uncompressing,length:11190138
after compressing,time interval:0.19483304023743, length:872131
after uncompressing,length:11190138
可以看到,压缩时间上是bzcompress()耗时多,gzcompress更优秀一些。
但是压缩效果上,bzcompress()会更好一些,因为压缩之后的内容更少一些。