Golang使用gzip压缩字符减少redis等存储占用的实现.docx

Golang使用gzip压缩字符减少redis等存储占用的实现.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

Golang使用gzip压缩字符减少redis等存储占用的实现

本文主要介绍了Golang使用gzip压缩字符减少redis等存储占用的实现,分享给大家,具体如下:

packagecompression

import(

???bytes

???compress/gzip

???encoding/json

funcGzipEncode(input[]byte)([]byte,error){

???//创建一个新的byte输出流

???varbufbytes.Buffer

???//创建一个新的gzip输出流

???//NoCompression???=flate.NoCompression???//不压缩

???//BestSpeed?????=flate.BestSpeed?????//最快速度

???//BestCompression??=flate.BestCompression??//最佳压缩比

???//DefaultCompression=flate.DefaultCompression//默认压缩比

???//gzip.NewWriterLevel()

???gzipWriter:=gzip.NewWriter(buf)

???//将inputbyte数组写入到此输出流中

???_,err:=gzipWriter.Write(input)

???iferr!=nil{

??????_=gzipWriter.Close()

??????returnnil,err

???}

???iferr:=gzipWriter.Close();err!=nil{

??????returnnil,err

???}

???//返回压缩后的bytes数组

???returnbuf.Bytes(),nil

funcGzipDecode(input[]byte)([]byte,error){

???//创建一个新的gzip.Reader

???bytesReader:=bytes.NewReader(input)

???gzipReader,err:=gzip.NewReader(bytesReader)

???iferr!=nil{

??????returnnil,err

???}

???deferfunc(){

??????//defer中关闭gzipReader

??????_=gzipReader.Close()

???}()

???buf:=new(bytes.Buffer)

???//从Reader中读取出数据

???if_,err:=buf.ReadFrom(gzipReader);err!=nil{

??????returnnil,err

???}

???returnbuf.Bytes(),nil

//压缩

funcMarshalJsonAndGzip(datainterface{})([]byte,error){

???marshalData,err:=json.Marshal(data)

???iferr!=nil{

??????returnnil,err

???}

???gzipData,err:=GzipEncode(marshalData)

???iferr!=nil{

??????returnnil,err

???}

???returngzipData,err

//解压

funcUnmarshalDataFromJsonWithGzip(input[]byte,outputinterface{})error{

???decodeData,err:=GzipDecode(input)

???iferr!=nil{

??????returnerr

???}

???err=json.Unmarshal(decodeData,output)

???iferr!=nil{

??????returnerr

???}

???returnnil

}

文档评论(0)

183****9196 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档