首頁 後端開發 Golang 如何使用go-redis/redis v8高效存儲和讀取Go結構體數組到Redis?

如何使用go-redis/redis v8高效存儲和讀取Go結構體數組到Redis?

Apr 02, 2025 pm 04:51 PM
redis git 解決方法 鍵值對 red

如何使用go-redis/redis v8高效存儲和讀取Go結構體數組到Redis?

本文探討如何使用go-redis/redis v8高效地存儲和讀取Go結構體數組到Redis。直接將Go結構體數組保存到Redis會導致錯誤,因為go-redis/redis v8SET命令僅支持字符串類型鍵值對。

以下代碼片段演示了嘗試直接存儲[]model.sysrolemenu類型數組到Redis,並解釋了錯誤原因。該代碼旨在獲取菜單樹結構並將其存儲到Redis中,以便快速訪問。 getmenutree函數獲取菜單樹數據後,嘗試使用global.gva_redis.set直接存儲menus數組,但由於SET方法要求值為字符串類型,導致失敗。

解決方法是將[]model.sysrolemenu數組轉換為Redis支持的JSON字符串。 序列化為JSON字符串後,即可成功存儲到Redis;讀取時再反序列化回Go結構體數組。

修改後的getmenutree函數如下所示,在保存到Redis之前將menus數組轉換為JSON字符串:

 import (
    "context"
    "encoding/json"

    "github.com/go-redis/redis/v8"
    "go.uber.org/zap"
)

// ... other imports and code ...

func GetMenuTree(roleId string) (err error, menus []model.SysRoleMenu) {
    err, menuTree := GetMenuTreeMap(roleId)
    menus = menuTree["0"]
    // ... other code ...

    jsonData, err := json.Marshal(menus)
    if err != nil {
        zap.L().Error("json marshal error", zap.Error(err))
        return err, nil
    }

    err = global.gvaRedis.Set(context.Background(), "menuTree:" roleId, string(jsonData), 0).Err()
    if err != nil {
        zap.L().Error("redis set error", zap.Error(err))
        return err, nil
    }
    return nil, menus
}

//讀取數據示例func ReadMenuTree(roleId string) (err error, menus []model.SysRoleMenu) {
    val, err := global.gvaRedis.Get(context.Background(), "menuTree:" roleId).Result()
    if err != nil {
        if err == redis.Nil {
            return nil, nil //Key不存在}
        return err, nil
    }

    err = json.Unmarshal([]byte(val), &menus)
    if err != nil {
        zap.L().Error("json unmarshal error", zap.Error(err))
        return err, nil
    }
    return nil, menus
}
登入後複製

通過json.Marshal函數將menus數組編碼為JSON字符串,然後將其存儲到Redis中。 讀取數據時,使用json.Unmarshal進行反序列化。 這解決了go-redis/redis v8不支持直接存儲數組結構的問題。

以上是如何使用go-redis/redis v8高效存儲和讀取Go結構體數組到Redis?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1665
14
CakePHP 教程
1424
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
REDIS的角色:探索數據存儲和管理功能 REDIS的角色:探索數據存儲和管理功能 Apr 22, 2025 am 12:10 AM

Redis在數據存儲和管理中扮演著關鍵角色,通過其多種數據結構和持久化機製成為現代應用的核心。 1)Redis支持字符串、列表、集合、有序集合和哈希表等數據結構,適用於緩存和復雜業務邏輯。 2)通過RDB和AOF兩種持久化方式,Redis確保數據的可靠存儲和快速恢復。

幣圈行情實時數據免費平台推薦前十名發布 幣圈行情實時數據免費平台推薦前十名發布 Apr 22, 2025 am 08:12 AM

適合新手的加密貨幣數據平台有CoinMarketCap和非小號。 1. CoinMarketCap提供全球加密貨幣實時價格、市值、交易量排名,適合新手與基礎分析需求。 2. 非小號提供中文友好界面,適合中文用戶快速篩選低風險潛力項目。

歐易交易所app官網下載蘋果手機下載 歐易交易所app官網下載蘋果手機下載 Apr 28, 2025 pm 06:57 PM

歐易交易所app支持蘋果手機下載,訪問官網,點擊“蘋果手機”選項,在App Store中獲取並安裝,註冊或登錄後即可進行加密貨幣交易。

比特幣成品結構分析圖是啥?怎麼畫? 比特幣成品結構分析圖是啥?怎麼畫? Apr 21, 2025 pm 07:42 PM

繪製比特幣結構分析圖的步驟包括:1. 確定繪圖目的與受眾,2. 選擇合適的工具,3. 設計框架並填充核心組件,4. 參考現有模板。完整的步驟確保圖表準確且易於理解。

REDIS:了解其架構和目的 REDIS:了解其架構和目的 Apr 26, 2025 am 12:11 AM

Redis是一种内存数据结构存储系统,主要用作数据库、缓存和消息代理。它的核心特点包括单线程模型、I/O多路复用、持久化机制、复制与集群功能。Redis在实际应用中常用于缓存、会话存储和消息队列,通过选择合适的数据结构、使用管道和事务、以及进行监控和调优,可以显著提升其性能。

git:版本控制的核心,github:社交編碼 git:版本控制的核心,github:社交編碼 Apr 23, 2025 am 12:04 AM

Git和GitHub是现代软件开发的关键工具。Git提供版本控制功能,通过仓库、分支、提交和合并管理代码。GitHub则提供代码托管和协作功能,如Issues和PullRequests。使用Git和GitHub可以显著提升开发效率和团队协作能力。

如何理解C  中的DMA操作? 如何理解C 中的DMA操作? Apr 28, 2025 pm 10:09 PM

DMA在C 中是指DirectMemoryAccess,直接內存訪問技術,允許硬件設備直接與內存進行數據傳輸,不需要CPU干預。 1)DMA操作高度依賴於硬件設備和驅動程序,實現方式因係統而異。 2)直接訪問內存可能帶來安全風險,需確保代碼的正確性和安全性。 3)DMA可提高性能,但使用不當可能導致系統性能下降。通過實踐和學習,可以掌握DMA的使用技巧,在高速數據傳輸和實時信號處理等場景中發揮其最大效能。

幣安官網入口 幣安官方最新入口2025 幣安官網入口 幣安官方最新入口2025 Apr 28, 2025 pm 07:54 PM

訪問幣安官網,並查看HTTPS和綠鎖標誌,避免釣魚網站,官方應用也可安全訪問。

See all articles