Bonnes pratiques pour Databases for Redis
Prenez le temps de passer en revue les meilleures pratiques suivantes qui sont recommandées si vous utilisez Databases for Redis.
Qu'est-ce que Databases for Redis?
Databases for Redis est un service OSS géré de type « Redis » proposé sur IBM Cloud. Il s'agit d'un magasin de structure de données en mémoire utilisé comme base de données, cache, courtier de messages et moteur de diffusion en continu. Contrairement aux bases de données traditionnelles, qui stockent les données sur disque, Redis stocke les données en mémoire (RAM), ce qui permet un faible temps d'attente. Les données sont éphémères, ce qui permet à Databases for Redis d'offrir des performances et un débit élevés. Vous pouvez également configurer Redis pour stocker les données de manière persistante sur le disque en faisant un compromis entre les performances et la disponibilité des données, car cela est possible en activant la synchronisation AOF (Append Only File) avec les instantanés RDB.
Les instantanés RDB sont activés pour la sauvegarde et la haute disponibilité, même si la persistance est désactivée.
Meilleures pratiques pour la planification de la capacité, par exemple
Vous devez planifier la capacité de l'instance Databases for Redis en fonction de votre conception d'application et d'architecture, comprendre la configuration matérielle requise et vous préparer à l'augmentation ou à la diminution de la demande. Les recommandations suivantes peuvent vous aider à optimiser la taille de votre instance.
- Comprendre vos données
- Vous devez connaître les types de données, la taille et la durée de vie de vos données. Cela vous aide à comprendre la durée des données disponibles en mémoire avant qu'elles ne soient supprimées ou déplacées.
- Estimation des besoins en mémoire
- Il est important de calculer vos besoins en mémoire. N'oubliez pas de prendre en compte non seulement vos données, mais également la mémoire requise pour la réplication, les connexions client, les mémoires tampon max-memory et les métadonnées Redis.
- Comprendre les chargements en lecture / écriture
- L'identification de vos charges de lecture / écriture vous aide à vous préparer aux besoins de mise à l'échelle automatique, à planifier les demandes de votre application et à maintenir la synchronisation maître-suiveur.
- Comprendre vos besoins en matière d'E-S/s
- Les opérations d'entrée-sortie par seconde sont un facteur clé que vous devez prendre en compte dans la planification de la capacité des instances. Databases for Redis prend régulièrement des instantanés RDB conformément à la configuration Redis par défaut, qui engage le disque même si votre instance est configurée pour le cache. Il arrive que des bases de données très sollicitées dépassent le nombre d'IOPS correspondant à la capacité du disque; augmenter la capacité du disque peut alors permettre de remédier à un goulot d'étranglement au niveau des performances.
- Planification de la redondance et reconnexion
- Plusieurs composants sont impliqués dans le calcul du cloud, ce qui peut entraîner des défaillances momentanées. Toutefois, à l'adresse IBM® Cloud Databases, nous offrons une haute disponibilité de 99.99% et vous encourageons à planifier les ID de connexion dans votre conception d'application à l'aide d'une logique de relance et de reconnexion.
- Prendre en compte la bande passante réseau
- Votre bande passante réseau peut avoir un impact significatif sur vos performances Databases for Redis. Vérifiez que vous disposez d'une bande passante réseau suffisante pour gérer les charges de votre base de données.
- Suivi et ajustements
- Nous vous recommandons de surveiller les performances et l'utilisation de votre instance d' Databases for Redis, à l'aide de IBM Cloud® Monitoring, afin de déterminer l'évolution du modèle d'utilisation de votre instance de base de données et de la redimensionner si nécessaire.
Meilleures pratiques en matière de performances
- Désactiver la persistance
- Par défaut, la persistance est activée sur le site Databases for Redis. Cette opération permet d'écrire une synchronisation AOF et d'augmenter la charge d'IOPS. Si votre application n'a pas besoin de conserver les données, désactivez-la à
l'aide de la commande
Set appendonly = no. Pour plus d'informations, consultez la section Définition d'un cache d'exemple. - Mémoire RAM par rapport aux coeurs
- Redis est une base de données en mémoire à unité d'exécution unique. Intrinsèquement, il a besoin de plus de mémoire RAM que CORES, contrairement à d'autres bases de données persistantes. Même s'il est à unité d'exécution unique, il utilise le "multiplexage" pour traiter les demandes, mais toutes les demandes sont traitées par une unité d'exécution. Toutefois, d'autres coeurs sont nécessaires pour maintenir l'intégrité et la stabilité de la base de données pour ses processus internes. Il est recommandé de vous concentrer davantage sur la mémoire RAM et le disque (pour les IOPS) pour Databases for Redis. Pour plus d'informations, voir Meilleures pratiques pour la planification de la capacité d'instance.
- Réduction de la mémoire
- Vous devez être prudent lorsque vous réduisez la mémoire de votre instance Databases for Redis. Etant donné que Redis est une base de données en mémoire, sa mémoire contient vos données à des fins de stockage, de traitement et d'extraction. Une réduction drastique de la mémoire peut temporairement empêcher votre instance de renvoyer une erreur, car l'espace disponible est insuffisant pour effectuer les opérations. Par exemple, supposons que 20 Go de données tentent de se charger dans 15 Go de mémoire, ce cas est lié au renvoi d'une erreur.
- Eviter les commandes coûteuses
- Certaines commandes de Redis sont coûteuses à exécuter. Par exemple, la commande KEYS, qui est utilisée fréquemment, doit être évitée. A la place, utilisez la commande SCAN, qui répartit l'itération sur de nombreux appels et ne lie pas l'ensemble de votre serveur à la fois.
- Choisir une règle d'expulsion
- Vous devez choisir une règle d'expulsion qui fonctionne pour votre application. Par défaut, les déploiements sont configurés avec une règle
noeviction. Use eviction policies likeallkeys-lru,volatile-lru,allkeys-random,volatile-random,volatile-ttl. For more information, see politique de la mémoire. - Définir les valeurs maxmemory
- Vous pouvez ajuster la valeur
maxmemory. Cependant, définissez une limite raisonnable, sinon vos données peuvent consommer toute la mémoire disponible et votre déploiement peut être à court de ressources. Par défaut, nous le définissons à 80% de la mémoire disponible du noeud de données. - Définir des stratégies TTL (Time-To-Live)
- TTL est une fonction idéale où les clés sont supprimées de la base de données après une durée définie. Cela est extrêmement utile si vous utilisez un cache Redis. Cependant, veillez à définir une valeur très courte ou très longue car une valeur très courte peut créer un recalcul des valeurs et une valeur très longue peut créer une utilisation inutile de la mémoire. Pour plus d'informations, voir la commande TTL.
Bonnes pratiques en matière de haute disponibilité
- Relancer et reconnecter la logique
- Les systèmes sont sujets à des interruptions. Vous êtes vivement encouragé à implémenter une logique de relance et de reconnexion dans votre architecture d'application afin d'éviter les interruptions. Utilisez IOREDIS, NODEREDIS ou tout autre package de votre choix pour assurer la continuité de votre application.
Pour plus d'informations, voir l'article de blog sur la détection et la gestion des erreurs avec Redis.
Meilleures pratiques en matière de surveillance
Vous devez surveiller votre IBM® Cloud Logs afin de détecter les erreurs courantes suivantes et prendre les mesures correctives qui s'imposent :
- Synchronisation AOF
- Disponible en lecture seule
- Connexion au maître perdue
- Pour obtenir des conseils sur la prévention des erreurs, consultez la section Comment éviter les erreurs courantes d' Databases for Redis?.
Meilleures pratiques générales
- regroupement de connexions
- La création ou la fermeture de connexions est coûteuse. La gestion efficace des connexions est importante et la mise en pool des connexions est utile pour réduire le temps système associé à l'ouverture et à la fermeture des connexions. Pour plus d'informations, voir pool de connexions.
- limites de connexion
- Utilisez les connexions de manière efficace. Surcharger l' Databases for Redis, avec un trop grand nombre de connexions, entraînera des erreurs et des interruptions de l'application. Laissez certaines connexions disponibles, car un certain nombre d'entre elles sont réservées à l'interne pour maintenir l'état et l'intégrité de votre base de données. Vous êtes invité à utiliser le regroupement de connexions. Pour plus d'informations, voir les limites de connexion.
- Délais d'attente de connexion
- Il est également important de définir des valeurs de délai d'attente appropriées pour vos connexions afin d'éviter que les ressources ne soient indéfiniment liées. Cependant, soyez prudent lorsque vous définissez des délais d'attente courts car cela peut entraîner une attrition de la connexion et une augmentation du temps d'attente. Alignez les délais d'attente avec les attentes opérationnelles de votre application.
- Utilisez la fonction de pipeline Redis
- Le pipeline Redis est une technique qui permet d'améliorer les performances en émettant plusieurs commandes à la fois sans attendre la réponse à chaque commande individuelle. Pour plus d'informations, voir Redis pipelining.
- Utilisez la fonction Redis Streams
- Redis Streams est un type de données qui fournit une abstraction en mémoire super rapide d'un journal d'ajout uniquement.
- Fractionner des données volumineuses
- Il est recommandé de fractionner les jeux de données volumineux en blocs plus petits avec plus de clés, c'est-à-dire de fractionner vos données sur plusieurs clés.
- Planification par lots
- Databases for Redis est planifié pour créer des sauvegardes automatisées tous les jours à une heure planifiée. Pendant ce temps, vos IOPS de base de données sont utilisées. Il est recommandé de ne pas exécuter vos propres travaux par lots à ce stade.
- Configurer les canaux de notification
- Il est recommandé à Databases for Redis de configurer des ID d'e-mail dans IBM Accounts pour recevoir des mises à jour périodiques sur les changements de version, la fin de vie ou les plannings de maintenance. Vous pouvez également surveiller votre icône de notification de compte IBM pour recevoir ces mises à jour.
Pour plus d'informations, consultez l'article « Best practices for Redis »(Meilleures pratiques pour l'utilisation de l'API de gestion des applications)sur le blog IBM Cloud.