ホームページ バックエンド開発 Golang Go-Redis/Redis V8を使用してRedisにGo構造配列を効率的に保存および読み取る方法は?

Go-Redis/Redis V8を使用してRedisにGo構造配列を効率的に保存および読み取る方法は?

Apr 02, 2025 pm 04:51 PM
redis git 解決 キーと値のペア red

Go-Redis/Redis V8を使用してRedisにGo構造配列を効率的に保存および読み取る方法は?

この記事ではgo-redis/redis v8 go-redis/redis v8SETコマンドは文字列タイプのキー値ペアのみをサポートするため、GO構造配列をRedisに直接保存するとエラーが発生します。

次のコードスニペットは、redisに直接[]model.sysrolemenuの配列を保存しようとすることを示し、エラーの原因を説明します。このコードは、メニューツリー構造を取得し、迅速なアクセスのためにRedisに保存するように設計されています。 getmenutreeツリーのデータを取得した後、 global.gva_redis.setを使用してmenus配列を直接保存しようとしましたが、 SET方法では値を文字列型にする必要があるため、失敗しました。

回避策は、 []model.sysrolemenuアレイをRedisがサポートするJSON文字列に変換することです。 JSON文字列にシリアル化すると、Redisに正常に保存できます。それを読むとき、それはGO構造配列に戻されます。

変更されたgetmenutree関数は次のとおりで、 menusアレイをJSON文字列に変換してから、Redisに保存します。

輸入 (
    "コンテクスト"
    「エンコード/json」

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

// ...その他の輸入品とコード...

func getMenutree(rofid string)(err error、menus [] model.sysrolemenu){
    err、menutree:= getMenutreemap(roleID)
    メニュー= Menutree ["0"]
    // ...他のコード...

    jsondata、err:= json.marshal(メニュー)
    err!= nil {
        zap.l()。エラー( "json元sのエラー"、zap.error(err))
        Errを返します、nil
    }

    err = global.gvaredis.set(context.background()、 "menutree:" rofid、string(jsondata)、0).err()
    err!= nil {
        zap.l()。エラー( "redis set error"、zap.error(err))
        Errを返します、nil
    }
    ニル、メニューを返します
}

//データfunc readmenutree(rofid string)(err error、menus [] model.sysrolemenu){を読み取るサンプル
    val、err:= global.gvaredis.get(context.background()、 "menutree:" roleid).result()
    err!= nil {
        err == redis.nilの場合{
            nil、nil //キーは存在しません}
        Errを返します、nil
    }

    err = json.unmarshal([] byte(val)、&menus)
    err!= nil {
        zap.l()。エラー( "json unmarshalエラー"、zap.error(err))
        Errを返します、nil
    }
    ニル、メニューを返します
}
ログイン後にコピー

menusアレイをjson.Marshal関数を介してjson文字列にエンコードし、それをRedisに保存します。データを読み取るときは、 json.Unmarshalを使用して脱介入を行います。これによりgo-redis/redis v8配列構造の直接保存をサポートしていないという問題が解決します。

以上がGo-Redis/Redis V8を使用してRedisにGo構造配列を効率的に保存および読み取る方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Redisの役割:データストレージと管理機能の調査 Redisの役割:データストレージと管理機能の調査 Apr 22, 2025 am 12:10 AM

Redisは、データストレージと管理において重要な役割を果たしており、複数のデータ構造と持続性メカニズムを通じて最新のアプリケーションの中核となっています。 1)Redisは、文字列、リスト、コレクション、注文されたコレクション、ハッシュテーブルなどのデータ構造をサポートし、キャッシュや複雑なビジネスロジックに適しています。 2)RDBとAOFの2つの持続方法を通じて、Redisは信頼できるストレージとデータの迅速な回復を保証します。

通貨サークル市場に関するリアルタイムデータの上位10の無料プラットフォーム推奨事項がリリースされます 通貨サークル市場に関するリアルタイムデータの上位10の無料プラットフォーム推奨事項がリリースされます Apr 22, 2025 am 08:12 AM

初心者に適した暗号通貨データプラットフォームには、Coinmarketcapと非小さいトランペットが含まれます。 1。CoinMarketCapは、初心者と基本的な分析のニーズに合わせて、グローバルなリアルタイム価格、市場価値、取引量のランキングを提供します。 2。小さい引用は、中国のユーザーが低リスクの潜在的なプロジェクトをすばやくスクリーニングするのに適した中国フレンドリーなインターフェイスを提供します。

Git:バージョンコントロールのコア、Github:ソーシャルコーディング Git:バージョンコントロールのコア、Github:ソーシャルコーディング Apr 23, 2025 am 12:04 AM

GitとGithubは、最新のソフトウェア開発のための重要なツールです。 GITは、リポジトリ、ブランチ、コミット、マージを介してコードを管理するバージョン制御機能を提供します。 GitHubは、問題やPullRequestsなどのコードホスティングおよびコラボレーション機能を提供します。 GitとGithubを使用すると、開発効率とチームコラボレーション機能が大幅に向上する可能性があります。

Redis:そのアーキテクチャと目的を理解する Redis:そのアーキテクチャと目的を理解する Apr 26, 2025 am 12:11 AM

Redisは、主にデータベース、キャッシュ、メッセージブローカーとして使用されるメモリデータ構造ストレージシステムです。そのコア機能には、シングルスレッドモデル、I/O多重化、持続メカニズム、複製、クラスタリング機能が含まれます。 Redisは、キャッシュ、セッションストレージ、メッセージキューのための実際のアプリケーションで一般的に使用されます。適切なデータ構造を選択し、パイプラインとトランザクションを使用し、監視とチューニングを使用することにより、パフォーマンスを大幅に改善できます。

ビットコイン完成品構造の分析チャートは何ですか?描く方法は? ビットコイン完成品構造の分析チャートは何ですか?描く方法は? Apr 21, 2025 pm 07:42 PM

ビットコイン構造分析チャートを描画する手順には、次のものが含まれます。1。図面の目的と視聴者を決定します。2。適切なツールを選択します。3。フレームワークを設計し、コアコンポーネントを入力します。4。既存のテンプレートを参照してください。完全な手順チャートが正確で理解しやすいことを確認してください。

CでDMA操作を理解する方法は? CでDMA操作を理解する方法は? Apr 28, 2025 pm 10:09 PM

CのDMAとは、直接メモリアクセステクノロジーであるDirectMemoryAccessを指し、ハードウェアデバイスがCPU介入なしでメモリに直接データを送信できるようにします。 1)DMA操作は、ハードウェアデバイスとドライバーに大きく依存しており、実装方法はシステムごとに異なります。 2)メモリへの直接アクセスは、セキュリティリスクをもたらす可能性があり、コードの正確性とセキュリティを確保する必要があります。 3)DMAはパフォーマンスを改善できますが、不適切な使用はシステムのパフォーマンスの低下につながる可能性があります。実践と学習を通じて、DMAを使用するスキルを習得し、高速データ送信やリアルタイム信号処理などのシナリオでその効果を最大化できます。

Apple携帯電話用のOUYI Exchangeアプリの公式Webサイトをダウンロードする Apple携帯電話用のOUYI Exchangeアプリの公式Webサイトをダウンロードする Apr 28, 2025 pm 06:57 PM

OUYI Exchangeアプリは、Apple携帯電話のダウンロードをサポートし、公式Webサイトにアクセスし、「Apple Mobile」オプションをクリックして、App Storeに入手してインストールし、登録またはログインして暗号通貨取引を実施します。

通貨サークルのトップ10の取引プラットフォーム、暗号通貨のトップ10の通常の取引プラットフォーム(2025版) 通貨サークルのトップ10の取引プラットフォーム、暗号通貨のトップ10の通常の取引プラットフォーム(2025版) Apr 21, 2025 pm 10:30 PM

2025年の暗号通貨取引プラットフォームのトップ10の正式な暗号通貨取引プラットフォームの予測は、1。Coinbase、2。Kraken、3。Gemini、4。Binance、5。Ouyi、6。Bitstamp、7。LmaxDigital、8。Itbit、9。

See all articles