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 数据结构

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

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

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

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

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

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

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

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 ()
Copier après la connexion
  • 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
Copier après la connexion
  • 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
Copier après la connexion
  • 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

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 construire le mode Cluster Redis Comment construire le mode Cluster Redis Apr 10, 2025 pm 10:15 PM

Le mode Redis Cluster déploie les instances Redis sur plusieurs serveurs grâce à la rupture, à l'amélioration de l'évolutivité et de la disponibilité. Les étapes de construction sont les suivantes: Créez des instances de redis étranges avec différents ports; Créer 3 instances Sentinel, Moniteur Redis Instances et basculement; Configurer les fichiers de configuration Sentinel, ajouter des informations d'instance Redis de surveillance et des paramètres de basculement; Configurer les fichiers de configuration d'instance Redis, activer le mode de cluster et spécifier le chemin du fichier d'informations de cluster; Créer un fichier nœuds.conf, contenant des informations de chaque instance redis; Démarrez le cluster, exécutez la commande CREATE pour créer un cluster et spécifiez le nombre de répliques; Connectez-vous au cluster pour exécuter la commande d'informations de cluster pour vérifier l'état du cluster; faire

Comment effacer les données redis Comment effacer les données redis Apr 10, 2025 pm 10:06 PM

Comment effacer les données Redis: utilisez la commande flushall pour effacer toutes les valeurs de clé. Utilisez la commande flushdb pour effacer la valeur clé de la base de données actuellement sélectionnée. Utilisez SELECT pour commuter les bases de données, puis utilisez FlushDB pour effacer plusieurs bases de données. Utilisez la commande del pour supprimer une clé spécifique. Utilisez l'outil Redis-CLI pour effacer les données.

Comment lire la file d'attente redis Comment lire la file d'attente redis Apr 10, 2025 pm 10:12 PM

Pour lire une file d'attente à partir de Redis, vous devez obtenir le nom de la file d'attente, lire les éléments à l'aide de la commande LPOP et traiter la file d'attente vide. Les étapes spécifiques sont les suivantes: Obtenez le nom de la file d'attente: Nommez-le avec le préfixe de "Fitre:" tel que "Fitre: My-Quyue". Utilisez la commande LPOP: éjectez l'élément de la tête de la file d'attente et renvoyez sa valeur, telle que la file d'attente LPOP: My-Queue. Traitement des files d'attente vides: si la file d'attente est vide, LPOP renvoie NIL et vous pouvez vérifier si la file d'attente existe avant de lire l'élément.

Comment configurer le temps d'exécution du script LUA dans Centos Redis Comment configurer le temps d'exécution du script LUA dans Centos Redis Apr 14, 2025 pm 02:12 PM

Sur CentOS Systems, vous pouvez limiter le temps d'exécution des scripts LUA en modifiant les fichiers de configuration Redis ou en utilisant des commandes Redis pour empêcher les scripts malveillants de consommer trop de ressources. Méthode 1: Modifiez le fichier de configuration Redis et localisez le fichier de configuration Redis: le fichier de configuration redis est généralement situé dans /etc/redis/redis.conf. Edit Fichier de configuration: Ouvrez le fichier de configuration à l'aide d'un éditeur de texte (tel que VI ou NANO): Sudovi / etc / redis / redis.conf Définissez le délai d'exécution du script LUA: Ajouter ou modifier les lignes suivantes dans le fichier de configuration pour définir le temps d'exécution maximal du script LUA (unité: millisecondes)

Comment définir la politique d'expiration redis Comment définir la politique d'expiration redis Apr 10, 2025 pm 10:03 PM

Il existe deux types de stratégies d'expiration de données redis: la suppression périodique: analyse périodique pour supprimer la clé expirée, qui peut être définie via des paramètres d'expiration-temps-transport et des paramètres d'expiration-temps-transparence. Suppression paresseuse: vérifiez les clés expirées de suppression uniquement lorsque les clés sont lues ou écrites. Ils peuvent être définis à travers des paramètres Lazyfree-Lazy-Deviction, Lazyfree-Lazy-Expire, Lazyfree-Lazy-User-Del.

Comment utiliser la ligne de commande redis Comment utiliser la ligne de commande redis Apr 10, 2025 pm 10:18 PM

Utilisez l'outil de ligne de commande redis (Redis-CLI) pour gérer et utiliser Redis via les étapes suivantes: Connectez-vous au serveur, spécifiez l'adresse et le port. Envoyez des commandes au serveur à l'aide du nom et des paramètres de commande. Utilisez la commande d'aide pour afficher les informations d'aide pour une commande spécifique. Utilisez la commande QUIT pour quitter l'outil de ligne de commande.

Comment implémenter Redis Counter Comment implémenter Redis Counter Apr 10, 2025 pm 10:21 PM

Redis Counter est un mécanisme qui utilise le stockage de la paire de valeurs de clés Redis pour implémenter les opérations de comptage, y compris les étapes suivantes: création de clés de comptoir, augmentation du nombre, diminution du nombre, réinitialisation du nombre et objet de comptes. Les avantages des compteurs Redis comprennent une vitesse rapide, une concurrence élevée, une durabilité et une simplicité et une facilité d'utilisation. Il peut être utilisé dans des scénarios tels que le comptage d'accès aux utilisateurs, le suivi des métriques en temps réel, les scores de jeu et les classements et le comptage de traitement des commandes.

Comment optimiser les performances de Debian Readdir Comment optimiser les performances de Debian Readdir Apr 13, 2025 am 08:48 AM

Dans Debian Systems, les appels du système ReadDir sont utilisés pour lire le contenu des répertoires. Si ses performances ne sont pas bonnes, essayez la stratégie d'optimisation suivante: simplifiez le nombre de fichiers d'annuaire: divisez les grands répertoires en plusieurs petits répertoires autant que possible, en réduisant le nombre d'éléments traités par appel ReadDir. Activer la mise en cache de contenu du répertoire: construire un mécanisme de cache, mettre à jour le cache régulièrement ou lorsque le contenu du répertoire change et réduire les appels fréquents à Readdir. Les caches de mémoire (telles que Memcached ou Redis) ou les caches locales (telles que les fichiers ou les bases de données) peuvent être prises en compte. Adoptez une structure de données efficace: si vous implémentez vous-même la traversée du répertoire, sélectionnez des structures de données plus efficaces (telles que les tables de hachage au lieu de la recherche linéaire) pour stocker et accéder aux informations du répertoire

See all articles