go项目中遇到大字符传达的时候,采用snappy压缩、解压缩是最好的方案。 虽然不是最高压缩率,但是它旨在获得高速的压缩和合理的压缩率,
突出的高速率和合理性。现在微服务中很火,其中涉及到 RPC 调用传递压缩,snappy是一个不错的选择。
snappy包:
” github .com/golang/snappy”
解压:snappy.Decode(dst, src []byte) ([]byte error)
压缩:snappy.Encode(dst, src []byte) ([]byte)
示例:
package main
import (
“fmt”
“github.com/golang/snappy”
)
var (
testmap = map[string]string{
“a”: “aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa”,
“b”: “bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb”,
}
)
func main() {
for k, v := range testmap {
got := snappy.Encode( nil , []byte(v))
fmt.Println(“k:”, k, “len:”, len(v), len(got))
}
}
结果:
k: a len: 34 6
k: b len: 33 6