最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Golang使用gzip壓縮字符減少redis等存儲占用的實現(xiàn)

 更新時間:2023年01月31日 11:13:31   作者:少林碼僧  
本文主要介紹了Golang使用gzip壓縮字符減少redis等存儲占用的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

本文主要介紹了Golang使用gzip壓縮字符減少redis等存儲占用的實現(xiàn),分享給大家,具體如下:

package compression

import (
?? ?"bytes"
?? ?"compress/gzip"
?? ?"encoding/json"
)

func GzipEncode(input []byte) ([]byte, error) {
?? ?// 創(chuàng)建一個新的 byte 輸出流
?? ?var buf bytes.Buffer
?? ?// 創(chuàng)建一個新的 gzip 輸出流

?? ?//NoCompression ? ? ?= flate.NoCompression ? ? ?// 不壓縮
?? ?//BestSpeed ? ? ? ? ?= flate.BestSpeed ? ? ? ? ?// 最快速度
?? ?//BestCompression ? ?= flate.BestCompression ? ?// 最佳壓縮比
?? ?//DefaultCompression = flate.DefaultCompression // 默認(rèn)壓縮比
?? ?//gzip.NewWriterLevel()
?? ?gzipWriter := gzip.NewWriter(&buf)
?? ?// 將 input byte 數(shù)組寫入到此輸出流中
?? ?_, err := gzipWriter.Write(input)
?? ?if err != nil {
?? ??? ?_ = gzipWriter.Close()
?? ??? ?return nil, err
?? ?}
?? ?if err := gzipWriter.Close(); err != nil {
?? ??? ?return nil, err
?? ?}
?? ?// 返回壓縮后的 bytes 數(shù)組
?? ?return buf.Bytes(), nil
}

func GzipDecode(input []byte) ([]byte, error) {
?? ?// 創(chuàng)建一個新的 gzip.Reader
?? ?bytesReader := bytes.NewReader(input)
?? ?gzipReader, err := gzip.NewReader(bytesReader)
?? ?if err != nil {
?? ??? ?return nil, err
?? ?}
?? ?defer func() {
?? ??? ?// defer 中關(guān)閉 gzipReader
?? ??? ?_ = gzipReader.Close()
?? ?}()
?? ?buf := new(bytes.Buffer)
?? ?// 從 Reader 中讀取出數(shù)據(jù)
?? ?if _, err := buf.ReadFrom(gzipReader); err != nil {
?? ??? ?return nil, err
?? ?}
?? ?return buf.Bytes(), nil
}

// 壓縮
func MarshalJsonAndGzip(data interface{}) ([]byte, error) {
?? ?marshalData, err := json.Marshal(data)
?? ?if err != nil {
?? ??? ?return nil, err
?? ?}
?? ?gzipData, err := GzipEncode(marshalData)
?? ?if err != nil {
?? ??? ?return nil, err
?? ?}
?? ?return gzipData, err
}

// 解壓
func UnmarshalDataFromJsonWithGzip(input []byte, output interface{}) error {
?? ?decodeData, err := GzipDecode(input)
?? ?if err != nil {
?? ??? ?return err
?? ?}

?? ?err = json.Unmarshal(decodeData, output)
?? ?if err != nil {
?? ??? ?return err
?? ?}
?? ?return nil
}

到此這篇關(guān)于Golang使用gzip壓縮字符減少redis等存儲占用的實現(xiàn)的文章就介紹到這了,更多相關(guān)Golang gzip壓縮減少存儲占用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Go語言為什么不支持前綴自增運(yùn)算符原理解析

    Go語言為什么不支持前綴自增運(yùn)算符原理解析

    這篇文章主要為大家介紹了Go語言為什么不支持前綴自增運(yùn)算符原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • 淺談Go語言的error類型

    淺談Go語言的error類型

    這篇文章主要介紹了淺談Go語言的error類型,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Go?分布式鏈路追蹤實現(xiàn)原理解析

    Go?分布式鏈路追蹤實現(xiàn)原理解析

    分布式鏈路追蹤作為解決分布式應(yīng)用可觀測問題的重要技術(shù),愈發(fā)成為分布式應(yīng)用不可缺少的基礎(chǔ)設(shè)施,本文將詳細(xì)介紹分布式鏈路的核心概念、架構(gòu)原理和相關(guān)開源標(biāo)準(zhǔn)協(xié)議,并分享我們在實現(xiàn)無侵入 Go 采集 Sdk 方面的一些實踐,需要的朋友可以參考下
    2022-06-06
  • golang通過cgo調(diào)用C++庫源碼示例

    golang通過cgo調(diào)用C++庫源碼示例

    這篇文章主要給大家介紹了關(guān)于golang通過cgo調(diào)用C++庫的相關(guān)資料,CGO是GO語言里面的一個特性,CGO屬于GOLANG的高級用法,主要是通過使用GOLANG調(diào)用CLANG實現(xiàn)的程序庫,需要的朋友可以參考下
    2024-02-02
  • Golang中map的三種聲明定義方式實現(xiàn)

    Golang中map的三種聲明定義方式實現(xiàn)

    本文主要介紹了Golang中map的三種聲明定義方式實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • 使用Go語言實現(xiàn)benchmark解析器

    使用Go語言實現(xiàn)benchmark解析器

    這篇文章主要為大家詳細(xì)介紹了如何使用Go語言實現(xiàn)benchmark解析器并實現(xiàn)及Web UI 數(shù)據(jù)可視化,文中的示例代碼講解詳細(xì),需要的小伙伴可以參考一下
    2025-04-04
  • Go語言panic和recover的用法實例

    Go語言panic和recover的用法實例

    panic()和recover()是Go語言中用于處理錯誤的兩個重要函數(shù),本文主要介紹了Go語言panic和recover的用法實例,panic()用于中止程序并引發(fā)panic,而recover()用于捕獲panic并恢復(fù)程序的執(zhí)行,感興趣的可以了解一下
    2024-01-01
  • Go定時器的三種實現(xiàn)方式示例詳解

    Go定時器的三種實現(xiàn)方式示例詳解

    這篇文章主要為大家介紹了Go定時器的三種實現(xiàn)方式示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • Golang?中的json.Marshal問題總結(jié)(推薦)

    Golang?中的json.Marshal問題總結(jié)(推薦)

    這篇文章主要介紹了Golang中的json.Marshal問題總結(jié),本文通過一個例子給大家詳細(xì)講解,本次提出的問題中,我們不難注意到其中的time.Time是一個匿名(Anonymous)字段,而這個就是答案的由來,需要的朋友可以參考下
    2022-06-06
  • Goland 生成可執(zhí)行文件的操作

    Goland 生成可執(zhí)行文件的操作

    這篇文章主要介紹了Goland 生成可執(zhí)行文件的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12

最新評論

开封市| 永德县| 佛坪县| 大渡口区| 麟游县| 梅州市| 和政县| 鹿泉市| 阳泉市| 洛南县| 兴和县| 闵行区| 大兴区| 久治县| 济宁市| 池州市| 江北区| 奇台县| 舞阳县| 台东县| 尼木县| 长岭县| 宁陵县| 双江| 新化县| 体育| 铅山县| 丰原市| 顺昌县| 确山县| 吉木乃县| 崇明县| 洛扎县| 曲靖市| 义乌市| 筠连县| 永善县| 手机| 浦北县| 读书| 云阳县|