在数据库中存储字符串的时候,为了节约空间,可以先使用gzip
对内容压缩,然后再进行存储。gzip
在浏览器的交互中比较常见,记得,之前在nginx
的配置上,还专门开启过gzip
的支持。
gzip
的压缩效率如何到底如何呢?当然,肯定跟具体的数据量级也有关系。下面,我们进行gzip
压缩操作,看一下实际的效果:
准备数据:
{"name":"道道法","age":26,"blogs":[100,201,333]}
首先,我们计算原始的json
串占用空间的大小
# 使用wc命令,-c属性表示,输出内容的byte数,输出值:44
echo "{"name":"道道法","age":26,"blogs":[100,201,333]}" | wc -c
接下来,我们对数据进行gzip
处理,看一下效果:
# 输出值:63,这确实是一个失败的例子
echo "{"name":"道道法","age":26,"blogs":[100,201,333]}" | gzip -f | wc -c
通过上面的效果可以看出,gzip
在处理小数据量的压缩时,其实效果并不好。
还有一点,gzip
压缩后的结果是没法直接存储成string
数据的。所以,引入下一个命令base64
,将raw data
转换成string
。命令很简单,就不再赘述。介绍一下base64
的编码过程,下面 Copy 阮老师的博客 :
- 第一步、将每三个字节作为一组,一共是24个二进制位。
- 第二步、将这24个二进制位分为四组,每个组有6个二进制位。
- 第三步、在每组前面加两个00,扩展成32个二进制位,即四个字节。
- 第四步、根据下表,得到扩展后的每个字节的对应符号,这就是Base64的编码值。
综上所诉,Base64
将三个字节转化成四个字节,因此Base64
编码后的文本,会比原文本大出三分之一左右。
来源:oschina
链接:https://my.oschina.net/u/3017278/blog/3212741