01 Redis

01 Redis

Redis est une base de données distante en mémoire, qui a non seulement de bonnes performances, mais aussi des caractéristiques de réplication et un modèle de données unique pour résoudre les problèmes. Redis fournit 5 types de structures de données différents, et divers problèmes peuvent être naturellement associés à ces structures de données. Grâce à la réplication, la persistance, le partage côté client et d'autres fonctionnalités, les utilisateurs peuvent facilement étendre Redis en un système pouvant contenir des centaines de Go de données et traiter des millions de demandes par seconde.

1.1 Présentation de Redis

Redis est une base de données non relationnelle très rapide (base de données non relationnelle). Elle peut stocker des mappages entre clés et 5 types de valeurs différents. Elle peut stocker des clés stockées en mémoire. Les données de paire de valeurs sont conservées sur le disque dur, et les fonctionnalités peuvent être copiées pour étendre les performances de lecture, et le partage côté client peut également être utilisé pour étendre les performances d'écriture.

Redis par rapport à d'autres bases de données ou logiciels

Par rapport à l'association de deux tables dans une base de données relationnelle, Redis n'utilise pas de tables et sa base de données ne prédéfinira pas ni ne forcera les utilisateurs à associer différentes données dans Redis;

Le serveur de cache clé-valeur hautes performances memcached est souvent comparé à Redis:

  • Les deux peuvent être utilisés pour stocker des mappages de valeurs-clés et leurs performances sont presque les mêmes;
  • Mais Redis peut automatiquement écrire des données sur le disque de deux manières différentes;
  • En plus de stocker des clés de chaîne ordinaires, Redis peut également stocker quatre autres structures de données, tandis que memcached ne peut stocker que des clés de chaîne ordinaires.

Ces différences permettent à Redis d'être utilisé pour résoudre un plus large éventail de problèmes et peuvent être utilisés à la fois comme base de données primaire (base de données primaire) et comme base de données auxiliaire pour d'autres systèmes de stockage (base de données auxiliaire).

En général, de nombreux utilisateurs n'utilisent Redis que lorsque les performances ou les fonctionnalités de Redis sont nécessaires. Les lecteurs doivent décider d'utiliser Redis en fonction de leurs propres besoins et déterminer s'ils doivent utiliser Redis comme stockage principal ou stockage auxiliaire et comment garantir l'intégrité des données par des moyens tels que la réplication, la persistance et les transactions.

Le nom Tapez Options de stockage des données Type de requête Fonctions supplémentaires
Redis Base de données non relationnelle utilisant en mémoire Chaînes, listes, collections, tables de hachage, collections ordonnées Chaque type a sa propre commande exclusive, en plus de la prise en charge des opérations en bloc (opération partielle) et partielle (partielle) Publication et abonnement, réplication maître / esclave (réplication maître / esclave), persistance, script (procédure stockée, procédure stockée)
Memcached Mise en cache de valeurs-clés à l'aide du stockage en mémoire Mappage de valeurs-clés Créer une commande, lire une commande, mettre à jour une commande, supprimer une commande et plusieurs autres commandes Serveur multithread pour des performances améliorées
Mysql Base de données relationnelle Chaque base de données peut contenir plusieurs tables de données, chaque table peut contenir plusieurs lignes; peut gérer les vues de plusieurs tables; prendre en charge l'espace et l'expansion tierce SELECT, UPDATE, INSERT, DELETE, fonction, procédure stockée Prise en charge de la nature ACID (nécessite InnoDB), de la réplication maître-esclave et de la réplication maître-maître
MongoDB Stockage de documents non relationnel utilisant le stockage sur disque Chaque base de données peut contenir plusieurs tables et chaque table peut contenir plusieurs documents BSON sans schéma Commande de création, commande de lecture, commande de mise à jour, commande de suppression, commande de requête conditionnelle, etc. Prise en charge de l'opération de réduction de carte, réplication maître-esclave, partitionnement, index spatial

Fonctionnalités supplémentaires

Endurance:

Lorsque vous utilisez une base de données en mémoire comme Redis, l'un des premiers problèmes à prendre en compte est "Où iront les données stockées par le serveur lorsque le serveur sera arrêté?"

Redis a deux méthodes de persistance différentes: elles peuvent écrire des données stockées en mémoire sur le disque dur dans un format petit et compact.

Le premier type est le vidage ponctuel. L'opération de vidage peut être effectuée lorsque la condition que "le nombre spécifié d'opérations d'écriture sont effectuées dans un laps de temps spécifié" est satisfaite, ou en appelant deux N'importe laquelle des commandes de disque dur vidées à exécuter;

La deuxième méthode de persistance écrit toutes les commandes de base de données modifiées dans un fichier à ajouter uniquement. Les utilisateurs peuvent définir l'écriture à ajouter uniquement pour ne jamais synchroniser, synchroniser une fois par seconde ou écrire à chaque fois en fonction de l'importance des données Synchronisez une fois lors de la saisie d'une commande.

Réplication maître-esclave:

En outre, bien que Redis présente de bonnes performances, il est limité par la conception du stockage en mémoire et parfois un serveur Redis peut ne pas être en mesure de traiter toutes les demandes. Afin d'étendre les performances de lecture de Redis et de fournir un support de basculement pour Redis, Redis implémente la fonction de réplication maître-esclave.

Réplication maître-esclave: le serveur esclave qui effectue la réplication se connectera au serveur maître et acceptera la copie de la base de données entière envoyée par le serveur maître; par la suite, les commandes d'écriture exécutées par le serveur maître seront envoyées à tous les serveurs esclaves connectés pour être exécutées, mettant ainsi à jour en temps réel L'ensemble de données du serveur. Étant donné que les données contenues dans le serveur esclave sont continuellement mises à jour, le client peut envoyer une demande de lecture à n'importe quel serveur esclave pour éviter un accès centralisé au serveur maître.

Raisons d'utiliser Redis

  • La méthode adoptée par Memcached pour supprimer des éléments consiste à masquer les éléments de la liste via le mécanisme de liste noire (liste noire), évitant ainsi les opérations de lecture, de mise à jour et d'écriture des éléments. Au contraire, Redis LIST et SET permettent aux utilisateurs d'ajouter directement ou Supprimez l'élément.
  • L'utilisation de Redis rend non seulement le code plus concis, plus facile à comprendre et à gérer, mais accélère également le code (car les utilisateurs n'ont pas besoin de lire la base de données pour mettre à jour les données). De plus, Redis est beaucoup plus efficace et facile à utiliser que les bases de données relationnelles.
  • La mise à jour des lignes de la table est une opération très lente. En plus de provoquer une lecture aléatoire, elle provoquera également une écriture aléatoire. Dans Redis, les utilisateurs peuvent utiliser directement la commande atomique INCR et ses variantes pour calculer des données agrégées, et parce que Redis stocke les données en mémoire, et la demande envoyée aux commandes Redis n'a pas besoin de passer par l'analyseur de requêtes classique et l'optimiseur de requêtes Traitement, donc la vitesse d'exécution des écritures aléatoires sur les données stockées par Redis est très rapide.
  • De plus, comme Redis n'est pas une base de données relationnelle ou une autre base de données de stockage sur disque dur, vous pouvez éviter d'écrire des données temporaires inutiles, éviter les problèmes de numérisation ou de suppression de données temporaires, et finalement améliorer les performances du programme.

1.2 Présentation de la structure de données Redis

Redis peut stocker des mappages entre les clés et 5 types de structure de données différents, à savoir chaîne, liste, ensemble, hachage et zset. Certaines commandes sont communes à ces cinq structures de données, telles que del, type, rename, etc.; mais il existe également certaines commandes Redis qui ne peuvent être utilisées que pour une ou deux structures.

Type de structure Structurer la valeur stockée Structurer l'alphabétisation
chaîne Chaîne, entier, virgule flottante Effectuer des opérations sur des chaînes entières ou des parties de chaînes; effectuer des opérations d'incrémentation ou de décrémentation sur des entiers et des nombres à virgule flottante
liste Une liste chaînée, chaque nœud de la liste chaînée contient une chaîne Push ou pop éléments des deux extrémités de la liste chaînée; découper la liste chaînée en fonction du décalage; lire un ou plusieurs éléments; rechercher ou supprimer des éléments en fonction des valeurs
ensemble Un collecteur non ordonné qui contient des chaînes, et chaque chaîne incluse est unique et différente Ajoutez, obtenez et supprimez des éléments individuels; vérifiez si un élément existe dans l'ensemble; calculez l'intersection, l'union et la différence. Obtenez des éléments au hasard de la collection
hacher Table de hachage non ordonnée contenant des paires clé-valeur Ajouter, obtenir et supprimer une seule paire clé-valeur; obtenir toutes les paires clé-valeur
jeton Mappage ordonné entre les membres de chaîne et les scores en virgule flottante, l'ordre des éléments est déterminé par la taille du score Ajouter, obtenir et supprimer des éléments individuels; obtenir des éléments en fonction de la plage de score ou des membres

Remarque:

  1. Les éléments suivants utiliseront l'environnement Redis simple créé par Docker et utiliseront redis-cli pour une interaction de commande simple. Le processus de démarrage de Docker Redis est présenté dans l'annexe au bas de cet article.
  2. Voici les opérations les plus simples des cinq structures de données.

String à Redis

Commande Comportement
avoir Obtenez la valeur stockée dans la clé
ensemble Définissez la valeur stockée dans la clé
du Supprimer la valeur stockée dans la clé donnée

Insérez la description de l'image ici

Liste à Redis

Une structure de liste peut stocker plusieurs chaînes dans l'ordre.

Commande Comportement
rpush Poussez la valeur spécifiée à l'extrémité droite de la liste, la commande renvoie la longueur actuelle de la liste
lrange Obtenez toutes les valeurs de la liste dans la plage donnée. Utilisez 0 comme index de début et -1 comme index de fin pour extraire tous les éléments
lindex Extraire un seul élément selon l'index
lpop Pop une valeur de l'extrémité gauche de la liste et renvoyer la valeur sautée

Insérez la description de l'image ici

Situé à Redis

Les collections et les listes Redis peuvent stocker plusieurs chaînes. La différence entre elles est que les listes peuvent stocker plusieurs chaînes identiques, tandis que les collections utilisent des tables de hachage pour garantir que chaque chaîne qu'elles stockent est différente. La même chose (ces tables de hachage n'ont que des clés et aucune valeur associée aux clés).

Commande Comportement
triste Ajouter l'élément spécifié à la collection
smembers Renvoie tous les éléments contenus dans la collection
sismember Vérifie si la valeur donnée existe dans la collection
srem Si l'élément donné existe dans la collection, supprimez l'élément

Outre les opérations de base d'ajout et de suppression, les ensembles prennent également en charge de nombreuses autres opérations, telles que l'agglomération, la lumière du soleil et sdiff. Ces trois commandes peuvent effectuer des opérations d'intersection, des opérations d'union et des opérations de différence, respectivement.

Opération de base:
Insérez la description de l'image ici

Hachage de table de hachage à Redis

Les hachages Redis peuvent stocker des mappages entre plusieurs paires clé-valeur. La valeur stockée dans le hachage peut être une chaîne ou un nombre, et les utilisateurs peuvent également incrémenter et décrémenter leurs valeurs numériques.

Le hachage est similaire à une version miniature de Redis à bien des égards.

Commande Comportement
hget Récupère la valeur de la clé de hachage spécifiée
hset Associer une paire clé-valeur donnée dans le hachage
hgetall Récupère toutes les paires clé-valeur contenues dans le hachage
hdel Si la clé donnée existe dans le hachage, supprimez la clé

Opération de base:

Insérez la description de l'image ici

Collection commandée zset à Redis

Comme les hachages ordonnés, les ensembles ordonnés sont utilisés pour stocker des paires clé-valeur:

Les clés d'un ensemble ordonné sont appelées membres (menber), et chaque membre est différent;

La valeur d'un ensemble ordonné s'appelle un score. Le score doit être un nombre à virgule flottante.

Une collection ordonnée est la seule structure dans Redis qui peut accéder aux éléments en fonction des membres, et peut également accéder aux éléments en fonction des scores et de l'ordre dans lequel les scores sont organisés.

Commande Comportement
zadd Ajouter un membre avec un score donné à une collection commandée
zrange Selon la position de l'élément dans l'ensemble ordonné, obtenez plusieurs éléments de l'ensemble ordonné
zrangebyscore Obtenez tous les éléments d'une collection ordonnée dans une partition donnée
zrem Si un membre donné existe dans un ensemble ordonné, supprimez le membre

Opération de base:
Insérez la description de l'image ici

1.3 Résumé simple

Redis est un outil qui peut être utilisé pour résoudre des problèmes. , Il a à la fois une structure de données que les autres bases de données n'ont pas, et un stockage en mémoire (ce qui rend Redis très rapide), distant (qui permet à Redis de se connecter avec plusieurs clients et serveurs) et persistant (qui permet au serveur de Après le redémarrage, les données avant le redémarrage) et l'évolutivité (via la réplication maître-esclave et le partage) et d'autres fonctionnalités sont conservées, ce qui permet aux utilisateurs de créer des solutions à différents problèmes de manière familière.

Changement de mentalité:

"Comment puis-je entasser mes idées dans les tables et les lignes de la base de données" va devenir: "Quelle structure de données Redis est utilisée pour résoudre ce problème est meilleure."

1.4 Annexe: Redis de démarrage simple dans Docker

Insérez la description de l'image ici

Je suppose que tu aimes

Origine www.cnblogs.com/kjgym/p/12757949.html
conseillé
Classement