Redis
 sql >> Base de données >  >> NoSQL >> Redis

Redis - quoi, pourquoi et comment utiliser Redis comme base de données principale

Ceci est la version écrite de ma nouvelle vidéo youtube ✍️ 🙂

Dans ce didacticiel Redis, vous découvrirez Redis et comment Redis peut être utilisé comme base de données principale pour des applications complexes qui ont besoin de stocker des données dans plusieurs formats.

Aperçu 📝

  1. Qu'est-ce que Redis et ses utilisations ainsi que pourquoi il convient aux applications de microservices complexes modernes ?
  2. Comment Redis prend en charge le stockage de plusieurs formats de données à des fins différentes via ses modules ?
  3. Comment Redis, en tant que base de données en mémoire, peut perserver les données et récupérer après une perte de données ?
  4. Comment faire évoluer et répliquer Redis ?
  5. Enfin, étant donné que l'une des plates-formes les plus populaires pour l'exécution de microservices est Kubernetes et que l'exécution d'applications avec état dans Kubernetes est un peu difficile, nous verrons comment vous pouvez facilement exécuter Redis dans Kubernetes

Qu'est-ce que Redis ?

Redis signifie re mot dic s tionnaires toujours

Redis est une base de données en mémoire . Tellement de nombreuses personnes l'ont utilisé comme cache au-dessus d'autres bases de données pour améliorer les performances de l'application. 🤓

Cependant, ce que beaucoup de gens ne savent pas, c'est que Redis est une base de données primaire à part entière qui peut être utilisé pour stocker et conserver plusieurs formats de données pour des applications complexes. 😎

Voyons donc les cas d'utilisation pour cela.

Pourquoi une base de données multi-modèle ?

Examinons une configuration courante pour une application de microservices.

Disons que nous avons une application complexe de médias sociaux avec des millions d'utilisateurs. Pour cela, nous pouvons être amenés à stocker différents formats de données dans différentes bases de données :

  1. Base de données relationnelle , comme Mysql, pour stocker nos données
  2. ElasticSearch pour une recherche et un filtrage rapides
  3. Base de données de graphes pour représenter les connexions des utilisateurs
  4. Base de données de documents , comme MongoDB pour stocker le contenu multimédia partagé quotidiennement par nos utilisateurs
  5. Service de cache pour une meilleure performance de l'application

Il est évident qu'il s'agit d'une configuration assez complexe.

Défis liés à plusieurs services de données

  • ❌ Chaque service de données doit être déployé et maintenu
  • ❌ Savoir-faire nécessaire pour chaque service de données
  • ❌ Différentes exigences d'évolutivité et d'infrastructure
  • ❌ Code d'application plus complexe pour interagir avec toutes ces différentes bases de données
  • ❌ Latence plus élevée (plus lente), en raison d'un plus grand nombre de sauts de réseau

Avoir une base de données multi-modèles

En comparaison avec une base de données multi-modèles, vous résolvez la plupart de ces défis. Tout d'abord, vous exécutez et gérez un seul service de données . Ainsi, votre application doit également communiquer avec un seul magasin de données et cela ne nécessite qu'une seule interface de programmation pour ce service de données.
De plus, la latence sera réduite en accédant à un seul point de terminaison de données et en éliminant plusieurs concentrateurs de réseau interne.

Donc, avoir une base de données, comme Redis, qui vous permet de stocker différents types de données ou vous permet essentiellement d'avoir plusieurs types de bases de données en une seule et d'agir comme un cache résout ces problèmes.

  • ✅ Exécutez et gérez une seule base de données
  • ✅ Plus simple
  • ✅ Latence réduite (plus rapide)

Comment fonctionne Redis ?

Modules Redis 📦
La façon dont cela fonctionne est que vous avez Redis Core, qui est un magasin de valeur clé qui prend déjà en charge le stockage de plusieurs types de données, puis vous pouvez étendre ce noyau avec ce qu'on appelle des modules pour différents types de données , dont votre application a besoin à différentes fins. Ainsi, par exemple, RediSearch pour des fonctionnalités de recherche comme ElasticSearch ou Redis Graph pour le stockage de données graphiques, etc. :

Et une grande chose à ce sujet est qu'il est modulaire . Ainsi, ces différents types de fonctionnalités de base de données ne sont pas étroitement intégrés dans une seule base de données, mais vous pouvez plutôt choisir exactement la fonctionnalité de service de données dont vous avez besoin pour votre application, puis ajouter ce module.

Cache prêt à l'emploi ⚡️
Bien sûr, lorsque vous utilisez Redis comme base de données principale, vous n'avez pas besoin d'un cache supplémentaire, car vous l'avez automatiquement prêt à l'emploi avec Redis. Cela signifie encore une fois moins de complexité dans votre application, car vous n'avez pas besoin d'implémenter la logique de gestion du remplissage et de l'invalidation du cache.

Redis est rapide 🚀
En tant que base de données en mémoire (les données sont stockées dans la RAM), Redis est super rapide et performant, ce qui rend bien sûr l'application elle-même plus rapide.

Mais à ce stade, vous vous demandez peut-être :
Comment une base de données en mémoire peut-elle conserver des données ? 🤔

Comment Redis peut-il conserver les données et récupérer après une perte de données ? 🧐

Si le processus Redis ou le serveur sur lequel Redis s'exécute échoue, toutes les données en mémoire ont disparu, n'est-ce pas ? Alors, comment les données sont-elles conservées et, fondamentalement, comment puis-je être sûr que mes données sont en sécurité ? 👀

Répliquer Redis ?

Eh bien, le moyen le plus simple d'avoir des sauvegardes de données est de répliquer Redis . Ainsi, si l'instance principale Redis tombe en panne, les répliques continueront de fonctionner et auront toutes les données. Donc, si vous avez un Redis répliqué, les répliques auront les données.

Mais bien sûr, si toutes les instances Redis tombent en panne, vous perdrez les données, car il ne restera plus aucune réplique. 🤯Alors nous avons besoin d'une réelle persévérance .

Instantané et AOF

Redis dispose de plusieurs mécanismes pour conserver les données et assurer leur sécurité.

Instantanés

Le premier :les instantanés, que vous pouvez configurer en fonction de l'heure, du nombre de requêtes, etc. Ainsi, les instantanés de vos données seront stockés sur un disque , que vous pouvez utiliser pour récupérer vos données si toute la base de données Redis a disparu.

Mais notez que vous allez perdre les dernières minutes de données , car vous effectuez généralement un instantané toutes les cinq minutes ou toutes les heures, selon vos besoins. 😐

AOF

Donc, comme alternative, Redis utilise quelque chose appelé AOF , qui signifie A ajouter O seulement F ile.

Dans ce cas, chaque modification est enregistrée sur le disque pour une persistance continue . Et lors du redémarrage de Redis ou après une panne, Redis relira les journaux Append Only File pour reconstruire l'état.

Donc AOF est plus durable , mais peut être plus lent que la création d'instantanés.

Meilleur choix 💡 :Utilisez une combinaison d'AOF et d'instantanés, où l'AOF conserve les données de la mémoire sur le disque en continu et vous avez des instantanés réguliers entre les deux pour enregistrer l'état des données au cas où vous auriez besoin de les récupérer :

Comment faire évoluer une base de données Redis ?

Supposons que mon instance Redis 1 manque de mémoire, de sorte que les données deviennent trop volumineuses pour être conservées en mémoire ou Redis devient un goulot d'étranglement et ne peut plus gérer de requêtes. Dans ce cas, comment puis-je augmenter la capacité et la taille de la mémoire pour ma base de données Redis ? 🤔

Nous avons plusieurs options pour cela :

1. Regroupement

Tout d'abord, Redis prend en charge le clustering . Cela signifie que vous pouvez avoir une instance Redis principale ou principale, qui peut être utilisée pour lire et écrire des données et vous pouvez avoir plusieurs répliques de cette instance principale pour lire les données :

De cette façon, vous pouvez faire évoluer Redis pour gérer plus de demandes et en plus augmenter la haute disponibilité de votre base de données, car si le maître tombe en panne, l'un des réplicas peut prendre le relais et votre base de données Redis peut continuer à fonctionner sans aucun problème.

2. Partage

Eh bien, cela semble assez bien, mais et si

  1. votre ensemble de données devient trop volumineux pour tenir dans une mémoire sur un seul serveur .
  2. De plus, nous avons mis à l'échelle les lectures dans la base de données, donc toutes les requêtes qui interrogent simplement les données. Mais notre instance maître est toujours seule et doit encore gérer toutes les écritures .

Alors, quelle est la solution ici? 🤔

Pour cela nous utilisons le concept de sharding , qui est un concept général dans les bases de données et que Redis prend également en charge.

Alors sharding signifie essentiellement que vous prenez votre ensemble de données complet et que vous le divisez en plus petits morceaux ou sous-ensembles de données , où chaque partition est responsable de son propre sous-ensemble de données.

Cela signifie donc qu'au lieu d'avoir une instance principale qui gère toutes les écritures sur l'ensemble de données complet, vous pouvez le diviser en 4 fragments, chacun étant responsable des lectures et des écritures sur un sous-ensemble de données . 💡

Et chaque fragment a également besoin de moins de capacité de mémoire , car ils ne disposent que d'un quart des données. Cela signifie que vous pouvez distribuer et exécuter des partitions sur des nœuds plus petits et faire évoluer votre cluster horizontalement :

Donc, avoir plusieurs nœuds , qui exécutent plusieurs répliques de Redis qui sont tous fragmentés vous offre une base de données Redis très performante et hautement disponible qui peut gérer beaucoup plus de requêtes sans créer de goulots d'étranglement 👍

Plus de sujets...

Regardez ma vidéo ci-dessous pour les 2 derniers sujets et scénarios :

  1. Applications nécessitant une disponibilité et des performances encore plus élevées sur plusieurs emplacements géographiques
  2. La nouvelle norme pour l'exécution des microservices est la plate-forme Kubernetes, donc exécuter Redis dans Kubernetes est un cas d'utilisation très intéressant et courant

La vidéo complète est disponible ici :🤓

J'espère que cela a été utile et intéressant pour certains d'entre vous ! 😊

Aimez, partagez et suivez-moi 😍 pour plus de contenu :

  • Instagram – Publication de nombreuses informations sur les coulisses
  • Groupe FB privé
  • Linked In