Go-Redis/Redis V8を使用してRedisにGo構造配列を効率的に保存および読み取る方法は?
この記事ではgo-redis/redis v8
go-redis/redis v8
のSET
コマンドは文字列タイプのキー値ペアのみをサポートするため、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 サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











Redisキャッシュソリューションは、製品ランキングリストの要件をどのように実現しますか?開発プロセス中に、多くの場合、ランキングの要件に対処する必要があります。

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

Intellijを使用して、Springboot Projectを設定する方法Default run configurationリスト...

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

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

バッチクエリにRediStemplateを使用するときに、なぜ返品値が空になるのですか?バッチクエリ操作にRedistemplateを使用する場合、返された結果に遭遇する可能性があります...

マルチノード環境でのスプリングブートタイミングタスクの最適化ソリューションは、春の開発です...

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