node中有什么比较好的字符串压缩工具没
发布于 2年前 作者 peiweippww 1178 次浏览

我有个比较大的字符串,需要存入数据库,我想压缩下后再存储,用的时候再解压,有没有什么好的字符串压缩工具?

12 回复

字符串压缩。。。 去掉空格换行符注释?还有什么 如果只是这些 用正则就好了呀

我这里面没有空格换行符,有不少重复的字段,我在想这些是不是可以合并起来

@peiweippww 合并的话,字符串不就变了样,后来要用的时候不会影响到吗 你说的好像是有点类似代码混淆,把所有的相同长字符替换成短字符,之类的

直接使用自带的zlib,将数据压缩,保存压缩数据,获取的时候再将它解压 http://nodejs.org/api/zlib.html

这个压缩后是buffer吧,我还有个中间过程,数据先是放在redis中的,redis貌似只能存字符串

@peiweippww fs = require ‘fs’ zlib = require ‘zlib’ fs.readFile './test.txt’, (err, data) -> console.dir data.length zlib.gzip data, (err, zip) -> console.dir zip.length str = zip.toString ‘binary’ buf = new Buffer str, ‘binary’ zlib.gunzip buf, (err, newData) -> console.dir newData.length

据我了解如果字符串只是几百k的话,压缩反而会变大了…

@vicanso 我这样弄报错了,var str = 'xxxxx’;zlib.deflate( str, function( err, buf ) { db.insert( …, {data:buf } ) }); 然后我再从数据库获取db.select(…,function(err,res ){ 解压:zlib.unzip(res_buf),这时候就报错了 })

@peiweippww 不知道你的db保存的数据类型是什么,不过我是确定redis可以保存Buffer.toString(‘binary’)的数据的,我以前就将压缩的html保存在redis,再拿出来过。

“字符串”,几百byte倒是有可能变大,几百K怎么会。

@vicanso 那样还压缩来干嘛?

回到顶部