Maison développement back-end Golang Comment stocker et lire efficacement les tableaux de structure GO pour redis à l'aide de Go-Redis / Redis V8?

Comment stocker et lire efficacement les tableaux de structure GO pour redis à l'aide de Go-Redis / Redis V8?

Apr 02, 2025 pm 04:51 PM
redis git 解决方法 键值对 red

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
}
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

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 !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Comment utiliser la solution Redis Cache pour réaliser efficacement les exigences de la liste de classement des produits? Comment utiliser la solution Redis Cache pour réaliser efficacement les exigences de la liste de classement des produits? Apr 19, 2025 pm 11:36 PM

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 ...

Rôle de Redis: Explorer les capacités de stockage et de gestion des données Rôle de Redis: Explorer les capacités de stockage et de gestion des données Apr 22, 2025 am 12:10 AM

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 par défaut des projets Springboot dans l'idée que les membres de l'équipe puissent partager? Comment définir la liste de configuration d'exécution par défaut des projets Springboot dans l'idée que les membres de l'équipe puissent partager? Apr 19, 2025 pm 11:24 PM

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

Quel est le tableau d'analyse de la structure du produit fini par Bitcoin? Comment dessiner? Quel est le tableau d'analyse de la structure du produit fini par Bitcoin? Comment dessiner? Apr 21, 2025 pm 07:42 PM

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 dix premières recommandations de plate-forme gratuites pour les données en temps réel sur les marchés du cercle de devises sont publiées Les dix premières recommandations de plate-forme gratuites pour les données en temps réel sur les marchés du cercle de devises sont publiées Apr 22, 2025 am 08:12 AM

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? Pourquoi la valeur de retour est-elle vide lors de l'utilisation de Redemplate pour la requête par lots? Apr 19, 2025 pm 10:15 PM

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 ...

Dans un environnement multi-nœuds, comment s'assurer que la tâche de synchronisation @Scheduled de Spring Boot est exécutée uniquement sur un seul nœud? Dans un environnement multi-nœuds, comment s'assurer que la tâche de synchronisation @Scheduled de Spring Boot est exécutée uniquement sur un seul nœud? Apr 19, 2025 pm 10:57 PM

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

Top 10 plates-formes de trading dans le cercle des devises, les 10 principales plates-formes de trading régulières pour la crypto-monnaie (2025 édition) Top 10 plates-formes de trading dans le cercle des devises, les 10 principales plates-formes de trading régulières pour la crypto-monnaie (2025 édition) Apr 21, 2025 pm 10:30 PM

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.

See all articles