Table des matières
introduction
Examen des connaissances de base
Analyse du concept de base ou de la fonction
Chaîne
Liste
Set (set)
Ensemble ordonné
Table de hachage (hachage)
Exemple d'utilisation
Utilisation de base
Utilisation avancée
Erreurs courantes et conseils de débogage
Optimisation des performances et meilleures pratiques
Maison base de données Redis Redis: un guide des structures de données populaires

Redis: un guide des structures de données populaires

Apr 11, 2025 am 12:04 AM
redis Structure de données

Redis prend en charge une variété de structures de données, notamment: 1. String, adapté au stockage des données à valeur unique; 2. Liste, adaptée aux files d'attente et aux piles; 3. SET, utilisé pour stocker des données non dégonflées; 4. Ensemble trié, adapté aux listes de classement et aux files d'attente de priorité; 5. Table du hachage, adapté au stockage des données d'objet ou structurées.

Redis: un guide des structures de données populaires

introduction

Redis, le nom est presque le nom de ménage dans le développement de logiciels modernes. Ce n'est pas seulement un système de cache, mais aussi une puissante base de données en mémoire qui prend en charge le stockage et le fonctionnement de plusieurs structures de données. Aujourd'hui, nous plongerons dans certaines des structures de données les plus couramment utilisées dans Redis pour vous aider à mieux les comprendre et les utiliser. Grâce à cet article, vous apprendrez à utiliser efficacement les structures de données de Redis dans des projets réels pour améliorer l'efficacité des performances et du développement de votre application.

Examen des connaissances de base

Le charme de Redis est sa vitesse et sa flexibilité, il prend en charge plusieurs structures de données, chacune avec ses utilisations et ses avantages uniques. Voyons d'abord rapidement le concept de base de Redis: Redis est un système de stockage de structure de données de mémoire open source qui peut être utilisé comme base de données, cache et courtier de messages. Il prend en charge plusieurs langages de programmation et fournit un riche ensemble de commandes pour manipuler les données.

Les structures de données de Redis incluent des chaînes, des listes, des ensembles, des ensembles commandés (ensembles triés), des tables de hachage, etc. Chaque structure de données a ses propres scénarios d'application et commandes de fonctionnement spécifiques.

Analyse du concept de base ou de la fonction

Chaîne

Les chaînes sont la structure de données la plus basique de Redis, similaire aux types de chaînes dans d'autres langages de programmation, mais les chaînes de Redis peuvent stocker des données binaires, afin qu'elles puissent être utilisées pour stocker des images, des audio et d'autres fichiers.

 # Définissez une chaîne redis_client.set ('my_key', 'Bonjour, redis!')

# Get string value = redis_client.get ('my_key')
Imprimer (valeur) # sortie: b'hello, redis! '

L'avantage des chaînes est leur simplicité et leur efficacité, qui conviennent au stockage des données d'une seule valeur.

Liste

Une liste est une collection commandée qui peut être poussée et sautée dans les deux extrémités, similaire à une liste liée à double sens.

 # Poussez l'élément redis_client.lpush ('my_list', 'item1', 'item2') à gauche de la liste

# Élément d'élément popup du côté droit de l'élément de liste = redis_client.rpop ('my_list')
Imprimer (élément) # sortie: b'item1 '

Les listes conviennent à la mise en œuvre des structures de données telles que des files d'attente et des piles, et sont souvent utilisées dans les files d'attente de messages et les files d'attente de tâches.

Set (set)

Un ensemble est un ensemble d'éléments non ordonné et unique qui prend en charge l'intersection, l'union, la différence et d'autres opérations.

 # Ajouter des éléments à la collection redis_client.sadd ('my_set', 'item1', 'item2', 'item3')

# Obtenez tous les éléments dans les éléments de collection = redis_client.smembers ('my_set')
print (items) # sortie: {b'item1 ', b'item2', b'item3 '}

Les collections conviennent au stockage des données non dégonflées et sont souvent utilisées dans des scénarios tels que les systèmes de balises et la déduplication.

Ensemble ordonné

Les ensembles commandés sont une version améliorée de l'ensemble, chaque élément a un score, trié par le score.

 # Ajouter des éléments au jeu ordonné redis_client.zadd ('my_sorted_set', {'item1': 1, 'item2': 2, 'item3': 3})

# Obtenez tous les éléments dans un ensemble de sets commandés = redis_client.zrange ('my_sorted_set', 0, -1, withscores = true)
imprimer (éléments) # sortie: [(b'item1 ', 1.0), (b'item2', 2.0), (b'item3 ', 3.0)]

Les collections commandées conviennent aux scénarios qui doivent être triés, tels que les listes de classement, les files d'attente de priorité, etc.

Table de hachage (hachage)

Une table de hachage est une collection de paires de valeurs clés similaires à un dictionnaire ou une carte dans d'autres langages de programmation.

 # Définissez les champs redis_client.hset ('my_hash', 'field1', 'value1')
redis_client.hset ('my_hash', 'field2', 'value2')

# Obtenez tous les champs et valeurs dans la table de hachage hash_data = redis_client.hgetall ('my_hash')
print (hash_data) # output: {b'field1 ': b'value1', b'field2 ': b'value2'}

Les tables de hachage conviennent au stockage d'objets ou de données structurées, et sont souvent utilisées dans des scénarios tels que les informations utilisateur et les fichiers de configuration.

Exemple d'utilisation

Utilisation de base

Examinons quelques exemples d'utilisation de base montrant comment utiliser ces structures de données dans un vrai projet.

 # Utilisez des chaînes pour stocker la session utilisateur redis_client.set ('user_session: 123', 'logged_in')

# Utilisez la liste pour implémenter la file d'attente de messages redis_client.lpush ('message_queue', 'new_message')

# Utilisez la collection pour stocker les balises utilisateur redis_client.sadd ('user_tags: 123', 'développeur', 'python')

# Utilisez des collections ordonnées pour implémenter le classement redis_client.zadd ('cavalier', {'user1': 100, 'user2': 200})

# Utilisez la table de hachage pour stocker les informations utilisateur redis_client.hset ('utilisateur: 123', 'name', 'John Doe')
redis_client.hset ('utilisateur: 123', 'email', 'John@example.com')

Utilisation avancée

Dans les projets réels, nous avons souvent besoin d'opérations plus complexes pour répondre aux besoins. Regardons les usages avancés.

 # Utiliser des ensembles pour effectuer le fonctionnement de l'intersection du système de balise redis_client.sadd ('user_tags: 123', 'développeur', 'python')
redis_client.sadd ('user_tags: 456', 'développeur', 'java')
Common_tags = redis_client.ster ('user_tags: 123', 'user_tags: 456')
Print (Common_Tags) # Output: {B'Developer '}

# Utilisez des ensembles ordonnés pour implémenter la file d'attente prioritaire redis_client.zadd ('priority_queue', {'tâche1': 1, 'tâche2': 2, 'tâche3': 3})
Highest_priority_task = redis_client.zpopmin ('priority_queue')
print (Highst_priority_task) # output: [(b'task1 ', 1.0)]

# Utilisez la table de hachage pour réaliser une mise à jour par lots des informations utilisateur user_data = {'name': 'Jane Doe', 'email': 'jane@example.com'}
redis_client.hmset ('utilisateur: 123', user_data)

Erreurs courantes et conseils de débogage

Lorsque vous utilisez Redis, vous pouvez rencontrer des problèmes et des malentendus courants. Voici quelques erreurs courantes et leurs conseils de débogage:

  • Conflit de nom de clé : dans un projet multi-modules, différents modules peuvent utiliser le même nom de clé, ce qui entraîne l'écrasement des données. La solution consiste à utiliser des espaces de noms tels que module1:user:123 et module2:user:123 .
  • Erreur de type de données : utilisez la mauvaise commande de manipulation de type de données, telles que l'utilisation d'une commande list pour les chaînes. La solution consiste à revérifier le type de données et à utiliser la commande TYPE pour confirmer le type de données de la clé.
  • Débours de mémoire : Redis est une base de données de mémoire, et la quantité excessive de données entraînera un débordement de mémoire. La solution consiste à définir régulièrement les données d'expiration maxmemory et maxmemory-policy et nettoyer les données d'expiration.

Optimisation des performances et meilleures pratiques

Dans les applications pratiques, il est très important d'optimiser les performances de Redis et de suivre les meilleures pratiques. Voici quelques suggestions:

  • Utilisation du pipeline : package plusieurs commandes à envoyer, réduisez les frais généraux du réseau et améliorez les performances.
 # Utiliser Pipeline = redis_client.pipeline ()
pipeline.set ('key1', 'value1')
pipeline.set ('key2', 'value2')
pipeline.execute ()
  • Utiliser la transaction : assurez-vous l'atomicité d'un ensemble de commandes pour éviter les incohérences de données.
 # Utilisez la transaction avec redis_client.pipeline () comme tuyau:
    Bien que vrai:
        essayer:
            pipe.watch ('key1')
            Value = Pipe.get ('key1')
            pipe.multi ()
            Pipe.set ('key1', int (valeur) 1)
            pipe.execute ()
            casser
        sauf redis.watcherror:
            Continuer à continuer
  • Sélection de la structure des données : sélectionnez la structure de données appropriée en fonction des besoins réels. Par exemple, l'utilisation des ensembles commandés au lieu de listes pour implémenter les classements peut améliorer l'efficacité de la requête.

  • Temps d'expiration : définissez un temps d'expiration raisonnable pour que les données évitent le débordement de la mémoire.

 # Set Expiration Time redis_client.sex ('Key1', 3600, 'Value1') # Expiré en 1 heure
  • Sharding : Pour les données à grande échelle, la technologie de rupture peut être utilisée pour distribuer des données sur plusieurs instances Redis pour améliorer les performances de lecture et d'écriture.

  • Surveillance et optimisation : utilisez les outils de surveillance de Redis (tels que Redis Insight) pour surveiller les goulots d'étranglement des performances et les optimiser en temps opportun.

Grâce à ces méthodes et pratiques, vous pouvez mieux utiliser les structures de données de Redis pour améliorer les performances et la fiabilité de votre application. Dans les projets réels, l'utilisation de ces structures de données et ces techniques d'optimisation de manière flexible améliorera considérablement votre efficacité de développement et vos performances du système.

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

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.

Stock Market GPT

Stock Market GPT

Recherche d'investissement basée sur l'IA pour des décisions plus intelligentes

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)

Sujets chauds

Comment utiliser PHP combiné avec l'IA pour obtenir la correction de texte de la syntaxe PHP détection et l'optimisation Comment utiliser PHP combiné avec l'IA pour obtenir la correction de texte de la syntaxe PHP détection et l'optimisation Jul 25, 2025 pm 08:57 PM

Pour réaliser la correction d'erreur de texte et l'optimisation de la syntaxe avec l'IA, vous devez suivre les étapes suivantes: 1. Sélectionnez un modèle ou une API d'IA appropriée, tels que Baidu, Tencent API ou bibliothèque NLP open source; 2. Appelez l'API via Curl ou Guzzle de PHP et traitez les résultats de retour; 3. Afficher les informations de correction d'erreur dans l'application et permettre aux utilisateurs de choisir d'adopter l'adoption; 4. Utilisez PHP-L et PHP_CODESNIFFER pour la détection de syntaxe et l'optimisation du code; 5. Collectez en continu les commentaires et mettez à jour le modèle ou les règles pour améliorer l'effet. Lorsque vous choisissez AIAPI, concentrez-vous sur l'évaluation de la précision, de la vitesse de réponse, du prix et du support pour PHP. L'optimisation du code doit suivre les spécifications du PSR, utiliser le cache raisonnablement, éviter les requêtes circulaires, revoir le code régulièrement et utiliser x

PHP réalise la gestion des stocks de produits de base et la monétisation de la synchronisation et du mécanisme d'alarme de l'inventaire PHP PHP réalise la gestion des stocks de produits de base et la monétisation de la synchronisation et du mécanisme d'alarme de l'inventaire PHP Jul 25, 2025 pm 08:30 PM

PHP assure l'atomicité de la déduction des stocks via les transactions de base de données et les verrous en ligne de Forupdate pour empêcher la survente élevée élevée en simultation; 2. La cohérence de l'inventaire multiplateforme dépend de la gestion centralisée et de la synchronisation axée sur les événements, combinant des notifications API / WebHook et des files d'attente de messages pour assurer une transmission fiable de données; 3. Le mécanisme d'alarme doit définir un faible inventaire, un inventaire zéro / négatif, des ventes invidables, des cycles de réapprovisionnement et des stratégies de fluctuations anormales dans différents scénarios, et sélectionner Dingtalk, SMS ou les personnes responsables par e-mail en fonction de l'urgence, et les informations d'alarme doivent être complètes et claires pour réaliser l'adaptation et la réponse rapide.

Comment utiliser PHP pour combiner l'IA pour générer une image. PHP génère automatiquement des œuvres d'art Comment utiliser PHP pour combiner l'IA pour générer une image. PHP génère automatiquement des œuvres d'art Jul 25, 2025 pm 07:21 PM

PHP n'effectue pas directement un traitement d'image AI, mais s'intègre via les API, car il est bon dans le développement Web plutôt que dans les tâches à forte intensité informatique. L'intégration de l'API peut atteindre une division professionnelle du travail, réduire les coûts et améliorer l'efficacité; 2. Intégration des technologies clés incluez l'utilisation de Guzzle ou Curl pour envoyer des demandes HTTP, le codage et le décodage des données JSON, l'authentification de la sécurité des clés de l'API, les tâches de traitement de la file d'attente asynchrones, les tâches prenant du temps, la gestion des erreurs robuste et le mécanisme de retrait, le stockage et l'affichage d'images; 3. Les défis courants incluent le coût des API incontrôlable, les résultats de génération incontrôlables, la mauvaise expérience utilisateur, les risques de sécurité et la gestion difficile des données. Les stratégies de réponse consistent à définir des quotas et des caches utilisateur, en fournissant des conseils ProTT et une sélection multi-images, des notifications asynchrones et des invites de progrès, un stockage et un audit de contenu de la variable d'environnement clé et un stockage cloud.

PHP Integrated AI Vorthing Reconnaissance et traducteur PHP Rendre Record Generation Solution de génération automatique PHP Integrated AI Vorthing Reconnaissance et traducteur PHP Rendre Record Generation Solution de génération automatique Jul 25, 2025 pm 07:06 PM

Sélectionnez le service de reconnaissance vocale AI approprié et intégrez PHPSDK; 2. Utilisez PHP pour appeler FFMPEG pour convertir les enregistrements en formats requis API (tels que WAV); 3. Téléchargez des fichiers sur le stockage cloud et appelez API Asynchronous Recognition; 4. Analyser les résultats JSON et organiser du texte à l'aide de la technologie NLP; 5. Générez des documents Word ou Markdown pour terminer l'automatisation des enregistrements de la réunion. L'ensemble du processus doit assurer le chiffrement des données, le contrôle d'accès et la conformité pour garantir la confidentialité et la sécurité.

Comment construire un environnement de conteneur de tâches PHP indépendant. Comment configurer le conteneur pour exécuter des scripts chronométrés PHP Comment construire un environnement de conteneur de tâches PHP indépendant. Comment configurer le conteneur pour exécuter des scripts chronométrés PHP Jul 25, 2025 pm 07:27 PM

La construction d'un environnement de conteneur de tâches PHP indépendant peut être implémentée via Docker. Les étapes spécifiques sont les suivantes: 1. Installez Docker et DockerCose comme base; 2. Créez un répertoire indépendant pour stocker les fichiers Dockerfile et Crontab; 3. Écrivez Dockerfile pour définir l'environnement PHPCLI et installer Cron et les extensions nécessaires; 4. Écrivez un fichier crontab pour définir les tâches de synchronisation; 5. Écrivez un répertoire de script Docker-Compose.yml et configurer les variables d'environnement; 6. Démarrez le conteneur et vérifiez le journal. Par rapport à l'exécution de tâches de synchronisation dans des conteneurs Web, les conteneurs indépendants présentent les avantages de l'isolement des ressources, de l'environnement pur, de la forte stabilité et de l'expansion facile. Pour assurer la journalisation et la capture d'erreur

Comment créer un système de gestion de journaux avec PHP PHP PHP Log Collection and Analysis Tool Comment créer un système de gestion de journaux avec PHP PHP PHP Log Collection and Analysis Tool Jul 25, 2025 pm 08:48 PM

Sélectionnez la méthode de journalisation: au stade précoce, vous pouvez utiliser l'erreur intégrée_log () pour PHP. Une fois le projet élargi, assurez-vous de passer à des bibliothèques matures telles que Monolog, prendre en charge plusieurs gestionnaires et niveaux de journal et assurez-vous que le journal contient des horodatages, des niveaux, des numéros de ligne de fichiers et des détails d'erreur; 2. Structure de stockage de conception: une petite quantité de journaux peut être stockée dans des fichiers, et s'il existe un grand nombre de journaux, sélectionnez une base de données s'il existe un grand nombre d'analyses. Utilisez MySQL / PostgreSQL sur des données structurées. Elasticsearch Kibana est recommandé pour semi-structuré / non structuré. Dans le même temps, il est formulé pour les stratégies de sauvegarde et de nettoyage régulières; 3. Interface de développement et d'analyse: il devrait avoir des fonctions de recherche, de filtrage, d'agrégation et de visualisation. Il peut être directement intégré à Kibana ou utiliser la bibliothèque du graphique Framework PHP pour développer l'auto-développement, en se concentrant sur la simplicité et la facilité d'interface.

Comment utiliser Kubernetes pour maintenir l'environnement PHP cohérent de production et de normes de configuration de conteneur local Comment utiliser Kubernetes pour maintenir l'environnement PHP cohérent de production et de normes de configuration de conteneur local Jul 25, 2025 pm 06:21 PM

Pour résoudre le problème de l'incohérence entre l'environnement PHP et la production, le noyau consiste à utiliser les capacités de conteneurisation et d'orchestration de Kubernetes pour atteindre la cohérence environnementale. Les étapes spécifiques sont les suivantes: 1. Créez une image Docker unifiée, y compris toutes les versions PHP, extensions, dépendances et configurations de serveurs Web pour s'assurer que la même image est utilisée dans le développement et la production; 2. Utilisez la configmap de Kubernetes et le secret pour gérer les configurations non sensibles et sensibles, et obtenez une commutation flexible de différentes configurations d'environnement via des supports de volume ou une injection variable d'environnement; 3. Assurer la cohérence du comportement de l'application via des fichiers unifiés de définition de déploiement de Kubernetes (tels que le déploiement et le service) et inclure dans le contrôle de version; 4

Comment utiliser PHP pour développer l'architecture du système de commerce électronique PHP et stratégie Comment utiliser PHP pour développer l'architecture du système de commerce électronique PHP et stratégie Jul 25, 2025 pm 06:33 PM

1. Les cadres traditionnels du backend du commerce électronique PHP comprennent Laravel (développement rapide, écologie forte), Symfony (niveau d'entreprise, structure stable), YII (excellentes performances, adaptées aux modules standardisés); 2. La pile technologique doit être équipée du cache MySQL Redis, de la file d'attente de messages RabbitMQ / Kafka, du NGINX PHP-FPM et de la séparation frontale est considérée; 3. Une architecture de concurrence élevée doit être superposée et modulaire, la base de données de la base de données et la base de données de séparation / distribution d'écriture, accélérée avec le cache et le CDN, le traitement asynchrone des tâches, le partage d'équilibrage de charge et de session, progressivement micro-service et établir un système de surveillance et d'alarme; 4. Les chemins de monétisation multiples comprennent la différence de prix du produit ou la commission de plate-forme, la publicité sur le site, l'abonnement SaaS, le développement de développement personnalisé et le marché du plug-in, la connexion API

See all articles