Maison >base de données >Redis >Introduction aux avantages, inconvénients et différences entre Redis et Memcached
1. Quels sont les avantages de l'utilisation de Redis ?
(1) C'est rapide car les données sont stockées en mémoire, similaire à HashMap. L'avantage de HashMap est que la complexité temporelle de la recherche et de l'opération est O(1)
(2. ) Prise en charge riche Type de données, prend en charge la chaîne, la liste, l'ensemble, l'ensemble trié, le hachage
(3) Prend en charge les transactions, les opérations sont toutes atomiques. La soi-disant atomicité signifie que toutes les modifications apportées aux données sont soit exécutées, soit. pas exécuté du tout
(4) Fonctionnalités riches : peut être utilisé pour la mise en cache, la messagerie, la définition du délai d'expiration par clé, il sera automatiquement supprimé après l'expiration
2 Quels sont les avantages de. Redis par rapport à Memcached ?
(1) Toutes les valeurs de memcached sont des chaînes simples En remplacement, redis prend en charge des types de données plus riches
(2) redis est beaucoup plus rapide que memcached
( 3) Redis peut conserver ses données
3. Problèmes de performances courants de Redis et solutions :
(1) Il est préférable que le maître n'effectue aucun travail de persistance, tel qu'un instantané de mémoire RDB et un fichier journal AOF.
(2) Si les données sont importantes, un esclave active les données de sauvegarde AOF et la politique est définie pour se synchroniser une fois par seconde
(3) Pour la réplication maître-esclave Pour la vitesse et la connexion stabilité, il est préférable que le maître et l'esclave soient dans le même LAN
(4) Essayez d'éviter d'ajouter des bibliothèques esclaves à la bibliothèque maître stressée
(5) Maître-esclave Ne pas utiliser une structure graphique pour la copie. Il est plus stable d'utiliser une structure de liste chaînée unidirectionnelle, c'est-à-dire : Maître <- Esclave1 <- Esclave2 <- Esclave3...
Une telle structure est pratique. pour résoudre le problème de la défaillance d'un point unique et réaliser le remplacement de l'esclave du maître. Si le maître raccroche, vous pouvez immédiatement activer Slave1 en tant que maître, laissant tout le reste inchangé.
4. Il y a 20 millions de données dans MySQL, mais seulement 200 000 données sont stockées dans redis. Comment s'assurer que les données dans redis sont des données chaudes
Connaissances connexes : La taille du redis. L'ensemble de données en mémoire a augmenté jusqu'à une certaine taille. Le moment venu, une stratégie d'élimination des données sera mise en œuvre. redis propose 6 stratégies d'élimination de données :
voltile-lru : sélectionnez les données les moins récemment utilisées dans l'ensemble de données (server.db[i].expires) avec un délai d'expiration défini pour l'élimination
volatile-ttl : sélectionnez les données à expirer dans l'ensemble de données (server.db[i].expires) avec un délai d'expiration défini et éliminez-les
volatile-random : sélectionnez l'ensemble de données avec un délai d'expiration (server. db[i].expires) pour éliminer toutes les données
allkeys-lru : Sélectionnez les données les moins récemment utilisées dans l'ensemble de données (server.db[i].dict) pour éliminer
allkeys -random : sélectionner arbitrairement des données dans l'ensemble de données (server.db[i].dict) pour éliminer
no-enviction (eviction) : interdire l'expulsion des données
5. La différence entre Memcache et Redis Que sont-ils ?
1). Méthode de stockage
Memecache stocke toutes les données dans la mémoire. Il raccrochera après une panne de courant. Les données ne peuvent pas dépasser la taille de la mémoire.
Redis est partiellement stocké sur le disque dur, ce qui assure la persistance des données.
2), Types de prise en charge des données
La prise en charge par Memcache des types de données est relativement simple.
Redis a des types de données complexes.
3). Différents modèles sous-jacents sont utilisés
Les méthodes de mise en œuvre sous-jacentes et les protocoles d'application pour la communication avec les clients sont différents.
Redis a directement construit le mécanisme VM par lui-même, car si le système général appelle les fonctions système, il perdra un certain temps à se déplacer et à demander.
4), la taille de la valeur
redis peut atteindre un maximum de 1 Go, tandis que memcache n'est que de 1 Mo
6 Quels sont les problèmes de performances courants de Redis ? Comment le résoudre ?
1) Le maître écrit des instantanés de mémoire et la commande save planifie la fonction rdbSave, ce qui bloquera le travail du thread principal. Lorsque l'instantané est relativement volumineux, l'impact sur les performances sera très important et. le service sera suspendu par intermittence, donc Master est le meilleur. N'écrivez pas d'instantanés de mémoire.
2) Maîtrisez la persistance AOF. Si le fichier AOF n'est pas réécrit, cette méthode de persistance aura un impact minime sur les performances, mais le fichier AOF continuera à croître si le fichier AOF est trop volumineux. affecter la récupération de la vitesse de redémarrage du maître.
Il est préférable que le maître n'effectue aucun travail de persistance, y compris les instantanés de mémoire et les fichiers journaux AOF. En particulier, n'activez pas les instantanés de mémoire pour la persistance. Si les données sont critiques, un esclave doit activer les données de sauvegarde AOF. La stratégie consiste à activer la sauvegarde des données AOF à chaque fois.
3). Le maître appelle BGREWRITEAOF pour réécrire le fichier AOF occupera une grande quantité de ressources CPU et mémoire pendant la réécriture, ce qui entraînera une charge de service excessive et une suspension du service à court terme.
4). Problèmes de performances de la réplication maître-esclave Redis Pour la vitesse de réplication maître-esclave et la stabilité de la connexion, il est préférable que l'esclave et le maître soient dans le même LAN
7. Redis est le scénario le plus approprié
Redis est le plus adapté à tous les scénarios de données en mémoire. Bien que Redis fournisse également des fonctions de persistance, il s'agit en fait davantage d'une fonction sauvegardée sur disque, ce qui est assez différent de. persistance au sens traditionnel du terme, alors vous pouvez avoir des questions. Il semble que Redis ressemble plus à une version améliorée de Memcached, alors quand utiliser Memcached et quand utiliser Redis ?
Si vous comparez simplement la différence. entre Redis et Memcached, la grande différence est que la plupart des gens obtiendront les opinions suivantes :
1 Redis prend non seulement en charge les données simples de type k/v, mais fournit également le stockage de structures de données telles que list, set, zset. , et du hachage.
2. Redis prend en charge la sauvegarde des données, c'est-à-dire la sauvegarde des données en mode maître-esclave.
3. Redis prend en charge la persistance des données, qui peut conserver les données en mémoire sur le disque et peut être rechargée pour être utilisée lors du redémarrage.
(1), Cache de session
L'un des scénarios les plus couramment utilisés pour utiliser Redis est le cache de session. L'avantage d'utiliser Redis pour mettre en cache les sessions par rapport à d'autres stockages (tels que Memcached) est que Redis assure la persistance. Lors de la maintenance d'un cache qui n'exige pas strictement de cohérence, la plupart des gens seraient mécontents si toutes les informations du panier d'achat de l'utilisateur étaient perdues. Le seraient-ils toujours ?
Heureusement, à mesure que Redis s'est amélioré au fil des années, il est facile de comprendre comment utiliser correctement Redis pour mettre en cache les documents de session. Même la célèbre plateforme commerciale Magento propose des plug-ins Redis.
(2), Full Page Cache (FPC)
En plus des jetons de session de base, Redis fournit également une plate-forme FPC très simple. Revenons au problème de cohérence, même si l'instance Redis est redémarrée, les utilisateurs ne verront pas de baisse de la vitesse de chargement des pages en raison de la persistance du disque. Il s'agit d'une grande amélioration, similaire au FPC local PHP.
En prenant à nouveau Magento comme exemple, Magento fournit un plugin pour utiliser Redis comme backend de cache pleine page.
De plus, pour les utilisateurs de WordPress, Pantheon dispose d'un très bon plug-in wp-redis, qui peut vous aider à charger le plus rapidement possible les pages que vous avez parcourues.
(3), Queue
L'un des grands avantages de Redis dans le domaine des moteurs de stockage en mémoire est qu'il fournit des opérations de liste et d'ensemble, ce qui permet à Redis d'être utilisé comme un bon message plateforme de file d'attente. Les opérations utilisées par Redis comme file d'attente sont similaires aux opérations push/pop de liste dans les langages de programmation locaux (tels que Python).
Si vous recherchez rapidement « Files d'attente Redis » dans Google, vous trouverez immédiatement un grand nombre de projets open source. Le but de ces projets est d'utiliser Redis pour créer de très bons outils back-end pour répondre à diverses files d'attente. besoins. . Par exemple, Celery a un backend qui utilise Redis comme courtier. Vous pouvez le visualiser à partir d'ici.
(4), classement/compteur
Redis implémente très bien l'opération d'incrémentation ou de décrémentation des nombres en mémoire. Les ensembles et les ensembles triés nous permettent également d'effectuer très simplement ces opérations. Redis fournit simplement ces deux structures de données.
Donc, nous voulons obtenir les 10 meilleurs utilisateurs de l'ensemble trié – appelons-les « user_scores », et nous devons simplement le faire comme ceci :
Bien sûr, cela suppose que vous triez par ordre croissant en fonction des scores de vos utilisateurs. Si vous souhaitez renvoyer l'utilisateur et son score, vous devez l'exécuter comme ceci :
ZRANGE user_scores 0 10 WITHSCORES
Agora Games est un bon exemple, implémenté dans Ruby, et ses classements utilisent Redis pour stocker les données que vous pouvez voir. ça ici.
(5), publication/abonnement
Le dernier (mais certainement pas le moindre) est la fonction de publication/abonnement de Redis. Il existe en effet de nombreux cas d’usage pour la publication/abonnement. J'ai vu des gens l'utiliser dans les connexions de réseaux sociaux, comme déclencheur de scripts basés sur la publication/abonnement, et même pour créer des systèmes de discussion en utilisant la fonctionnalité de publication/abonnement de Redis ! (Non, c'est vrai, vous pouvez le vérifier).
De toutes les fonctionnalités proposées par Redis, j'estime que c'est celle que les gens aiment le moins, même si elle offre aux utilisateurs ce multi-fonction.
Pour plus de connaissances sur Redis, veuillez faire attention à la colonne Tutoriel d'introduction à Redis.
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!