


Comment stocker et lire efficacement les tableaux de structure GO pour redis à l'aide de Go-Redis / Redis V8?
Cet article examine comment stocker et lire efficacement les tableaux de structure GO pour redis à l'aide de go-redis/redis v8
La sauvegarde du tableau de structure GO directement sur redis provoquera une erreur, car la commande SET
de go-redis/redis v8
ne prend en charge que les paires de valeurs clés de type de chaîne.
L'extrait de code suivant montre à essayer de stocker un tableau de type []model.sysrolemenu
directement à Redis et explique la cause de l'erreur. Le code est conçu pour obtenir la structure de l'arborescence du menu et le stocker dans Redis pour un accès rapide. Après avoir obtenu les données de l'arborescence getmenutree
, j'ai essayé d'utiliser global.gva_redis.set
pour stocker directement le tableau menus
, mais comme SET
nécessite que la valeur soit un type de chaîne, elle a échoué.
La solution de contournement consiste à convertir le tableau []model.sysrolemenu
en une chaîne JSON prise en charge par Redis. Après l'avoir sérialisé en une chaîne JSON, il peut être stocké avec succès dans Redis; Lors de la lecture, il sera désérialisé dans le tableau de la structure Go.
La fonction getmenutree
modifiée est la suivante, convertissant les réseaux menus
en chaînes JSON avant de sauver en redis:
importer ( "contexte" "Encodage / JSON" "github.com/go-redis/redis/v8" "go.uber.org/zap" ) // ... autres importations et code ... func getMenUtree (RoleId String) (err Error, menus [] Model.SysroleMenu) { ERR, MENUTREE: = GetMenutreEmap (RoleID) Menus = menutree ["0"] // ... autre code ... JSONDATA, ERR: = JSON.MARSHAL (MENUS) Si err! = Nil { zap.l (). Error ("JSON Marshal Error", zap.error (err)) Retour Err, nil } err = global.gvaredis.set (context.background (), "menutree:" RoleId, String (jSondata), 0) .err () Si err! = Nil { zap.l (). Erreur ("Erreur de définition redis", zap.error (err)) Retour Err, nil } retour nul, menus } // un échantillon pour lire les données Func ReadMenTree (RoleId String) (err Error, Menus [] Model.SysroleMenu) { Val, err: = global.gvaredis.get (context.background (), "menUtree:" roleid) .result () Si err! = Nil { Si err == redis.nil { retour nil, nil // key n'existe pas} Retour Err, nil } err = json.unmarshal ([] octet (val), & menus) Si err! = Nil { zap.l (). Erreur ("Erreur JSON Unmarshal", zap.error (err)) Retour Err, nil } retour nul, menus }
Encoder menus
dans une chaîne JSON via la fonction json.Marshal
et le stocker dans Redis. Lorsque vous lisez des données, utilisez json.Unmarshal
pour la désérialisation. Cela résout le problème que go-redis/redis v8
ne prend pas en charge le stockage direct des structures de tableau.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Comment la solution de mise en cache Redis réalise-t-elle les exigences de la liste de classement des produits? Pendant le processus de développement, nous devons souvent faire face aux exigences des classements, comme l'affichage d'un ...

Redis joue un rôle clé dans le stockage et la gestion des données, et est devenu le cœur des applications modernes à travers ses multiples structures de données et mécanismes de persistance. 1) Redis prend en charge les structures de données telles que les chaînes, les listes, les collections, les collections ordonnées et les tables de hachage, et convient au cache et à la logique métier complexe. 2) Grâce à deux méthodes de persistance, RDB et AOF, Redis assure un stockage fiable et une récupération rapide des données.

Comment définir la liste de configuration d'exécution du projet Springboot dans l'idée en utilisant Intellij ...

Les étapes pour dessiner un tableau d'analyse de structure Bitcoin comprennent: 1. Déterminez l'objectif et le public du dessin, 2. Sélectionnez le bon outil, 3. Concevez le cadre et remplissez les composants principaux, 4. Reportez-vous au modèle existant. Les étapes complètes garantissent que le graphique est exact et facile à comprendre.

Les plateformes de données de crypto-monnaie adaptées aux débutants incluent CoinmarketCap et la trompette non à petites choses. 1. CoinmarketCap fournit des classements mondiaux de prix, de valeur marchande et de volume de trading pour les besoins novices et d'analyse de base. 2. La citation non à petites choses fournit une interface adaptée aux Chinois, adaptée aux utilisateurs chinois afin de projeter rapidement des projets potentiels à faible risque.

Pourquoi la valeur de retour est-elle vide lors de l'utilisation de Redemplate pour la requête par lots? Lorsque vous utilisez Redemplate pour les opérations de requête par lots, vous pouvez rencontrer les résultats renvoyés ...

La solution d'optimisation pour les tâches de synchronisation Springboot dans un environnement multi-nœuds développe le ressort ...

Les prévisions pour les 10 principales plateformes de trading de crypto-monnaie officielles dans les plateformes de trading de crypto-monnaie 2025 sont: 1. Coinbase, 2. Kraken, 3. Gemini, 4. Binance, 5. OUYI, 6. Bitstamp, 7. Lmax Digital, 8. Itbit, 9. Coincheck, 10. Sesame Open Door, ces plates-formes effectuent une conformité, une conformité, 10.
