Partage de technologie

Configuration et optimisation de Redis

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. Bases de données relationnelles et bases de données non relationnelles

(1) Base de données relationnelle

Une base de données relationnelle est une base de données structurée, créée sur une base de données de modèle relationnel et créée orientée enregistrement.

Bases de données relationnelles courantes : Oracle, MySQL, SQL Server, Microsoft Access, DB2.

(2) Base de données non relationnelle

NOSQL=Not Only SQL est le terme général désignant les bases de données non relationnelles. Selon la méthode de stockage, la structure de stockage et les scénarios d'utilisation, on parle de base de données non relationnelle. Les bases de données autres que les bases de données relationnelles traditionnelles peuvent être appelées bases de données non relationnelles.

Bases de données non relationnelles courantes : Redis, MongoDB, Hbase, CouhDB.

2. Bases de Redis

(1) Introduction à Redis

Redis est une base de données Nosql open source écrite en langage C. Elle s'exécute sur la base de la mémoire et prend en charge la persistance. Elle adopte une forme de stockage clé-valeur (paire clé-valeur). Son numéro de port est le 6379.

(2) Avantages de Redis

  1. A une vitesse élevée de lecture et d’écriture des données.
  2. Prend en charge les types de données riches. valeur-clé, chaînes, listes, hachages, ensembles, ensembles ordonnés.
  3. Prend en charge la persistance des données. Les données sont enregistrées sur le disque et peuvent être chargées et utilisées après le redémarrage.
  4. Atomique.
  5. Prise en charge de la sauvegarde des données.

3. installation redis

1. Installez Redis

[root@localhost ~]#systemctl stop firewalld

[root@localhost ~]# setenforce 0

[root@localhost ~]# yum -y install gcc* zlib-devel

[root@localhost ~]#tar xvzf redis-4.0.9.tar.gz

[root@localhost ~]#cd redis-4.0.9/

[root@localhost redis-4.0.9]# créer

Avis:

Un message d'erreur sera généré après make,

solution:
Solution 1 : utilisez make MALLOC=libc pour spécifier l'allocateur de mémoire à compiler pour la libc
Solution 2 : faire propre et& faire distclean

[root@localhost redis-4.0.9]# make PREFIX=/usr/local/redis install
[utils root@localhost]# ln -s /usr/local/redis/bin/* /usr/local/bin/

[root@localhost redis-4.0.9]# cd utils/
Parmi eux : install_server.sh est le script d'initialisation

[root@localhost utils]# ./install_server.sh
Veuillez sélectionner le chemin de l'exécutable Redis [] /usr/local/redis/bin/redis-server(donner le chemin de l'exécutable)

Afficher le contrôle des processus et des services
[utils root@localhost]# netstat -anpt | grep redis
tcp 0 0 127.0.0.1:6379 0.0.0.0:* ÉCOUTER 5360/serveur-redis 1
[root@localhost utils]# /etc/init.d/redis_6379 stop(Redis est fermé)
[root@localhost utils]# /etc/init.d/redis_6379 démarrage(sur)
[root@localhost utils]# /etc/init.d/redis_6379 état (État)

Modification des paramètres de configuration
[root@localhost ~]#vim /etc/redis/6379.conf
lier 127.0.0.1 192.168.10.101//Adresse de l'hôte d'écoute
port 6379 //port
démoniser oui //Activer le processus démon
fichier pid /var/run/redis_6379.pid //Spécifiez le fichier PID
Avis de niveau de journalisation//niveau de journal
fichier journal /var/log/redis_6379.log// Spécifier le fichier journal

[root@localhost~]#/etc/init.d/redis_6379 redémarrage

2.redis outil de commande

[root@localhost utils]# redis-cli(Connexion locale)
[utils root@localhost]# redis-cli -h 192.168.10.101 -p 6379(connexion à distance)
192.168.10.101:6379> ping(Le service de détection fonctionne normalement)
PONG

3 : outil de test de référence Redis

redis-benchmark est l'outil officiel de test de performances Redis qui peut tester efficacement les performances des services Redis.

  • -h : spécifiez le nom d'hôte du serveur ;
  • -p : Spécifiez le port du serveur ;
  • -s : Spécifie le socket du serveur ;
  • -c : spécifiez le nombre de connexions simultanées ;
  • -n : spécifiez le nombre de requêtes ;
  • -d : Spécifiez la taille des données de la valeur SET/GET en octets ;
  • -k:1=rester en vie 0=reconnecter;
  • -r : SET/GET/INCR utilise des clés aléatoires, SADD utilise des valeurs aléatoires ;
  • -P : transfert via un tuyau<numreq> demander;
  • -q : forcer la fermeture de Redis. Seules les valeurs de requête/s sont affichées ;
  • --csv : sortie au format CSV ;
  • -l : Génère une boucle et exécute le test en permanence ;
  • -t : exécute uniquement une liste de commandes de test séparées par des virgules ;
  • -I : Mode veille. Ouvrez uniquement N connexions inactives et attendez.
  • (1) Performances des demandes de test

    [root@localhost ~]#redis-benchmark -h 192.168.10.101 -p 6379 -c 100 -n 100000

    Remarque:

    -h : spécifiez le nom d'hôte du serveur ;

  • -p : Spécifiez le port du serveur ;

    -c : spécifiez le nombre de connexions simultanées ;

    -n : spécifiez le nombre de requêtes ;

(2) Tester les performances d'accès

[root@localhost ~]#redis-benchmark -h 192.168.10.101 -p 6379 -q -d 100

Remarque:

-h : spécifiez le nom d'hôte du serveur ;

-p : Spécifiez le port du serveur ;

-d : Spécifiez la taille des données de la valeur SET/GET en octets ;

-q : forcer la fermeture de Redis. Seules les valeurs de requête/s sont affichées ;

  1. 4. Commandes courantes pour la base de données Redis

définir stocke le format de commande de données définir la valeur de la clé

get Obtenir le format de commande de données obtenir la clé

(1) Commandes associées aux touches

1. Ajouter des paires clé-valeur

127.0.0.1:6379&gt; ensemble 1 1
D'ACCORD
127.0.0.1:6379&gt; ensemble 2 2
D'ACCORD
127.0.0.1:6379&gt; ensemble 3 3
D'ACCORD

2. Afficher toutes les valeurs de la base de données

127.0.0.1:6379&gt; clés *
1) "3"
2) "1"
3) "2"

3. Afficher les données commençant par v dans la base de données
127.0.0.1:6379>CLÉS v*

4. Affichez toutes les données commençant par v dans la base de données

127.0.0.1:6379>CLÉS v?

5.Afficher la base de données actuelle avec v débutCe qui suit contient deux chiffres de données

127.0.0.1:6379>CLÉS v??

(2) existe

Déterminez si la valeur existe.

127.0.0.1:6379>existe f5Déterminer si f5 existe

(entier) 1 Le résultat est 1, indiquant que la clé f5 existe

comme

(entier) 0 Le résultat est 0, indiquant que la touche f5 n'existe pas

(3)supprimer

du La commande peut supprimer le spécifié clé

127.0.0.1:6379> du v5 Supprimer la v5 dans la base de données

(entier) 1

127.0.0.1:6379>obtenir la v5

(néant)

(4) tapez

utiliser taper La commande peut être obtenue clé correspondant valeur type de valeur

127.0.0.1:6379>type k1

chaîne

Remarque:

Types de données pris en charge par Redis

  • String : String est le type le plus simple, qui est un ensemble et un get ordinaires, utilisé pour la mise en cache des valeurs de clé.
  • Hash : algorithme de hachage, une structure similaire à la carte. Généralement, les données structurées, telles qu'un objet, peuvent être mises en cache dans Redis.
  • Liste : La liste est une liste ordonnée. Vous pouvez utiliser la liste pour stocker certaines structures de données de type liste, telles que les listes de fans, les listes de commentaires d'articles, etc.
  • Set : Set est une collection non ordonnée qui supprime automatiquement les doublons.
  • Ensemble trié : Ensemble trié est un ensemble trié, qui est dédupliqué mais peut être trié lors de l'écriture, une partition est attribuée et automatiquement triée en fonction de la partition.

(5) renommer

Renommer La commande concerne un existant clé Renommer

En utilisation réelle, il est recommandé d'utiliser existe Commande pour afficher la cible clé existe, puis décidez s'il faut exécuter Renommer commande pour éviter d’écraser des données importantes.

127.0.0.1:6379>renommer v22 v2 Renommer la v22 en v2

D'ACCORD

(6) Renommer

renamenx La fonction de la commande est de modifier l'existant clé Effectuez un changement de nom et vérifiez si le nouveau nom existe.

utiliserrenamenx Lorsque la commande est renommée, si la cible clé S'il existe, il ne sera pas renommé.

(7) taille de base de données

taille de la base de données Le but de la commande est de visualiser la base de données actuelle clé Nombre de.

127.0.0.1:6379> taille de la base de données

(entier) 5

5. Commandes communes pour plusieurs bases de données

(1) Basculer entre plusieurs bases de données

Redis Inclus par défaut sans aucune modification 16 base de données, le nom de la base de données est un nombre 0-15 être nommé dans l'ordre

(1)Passer au numéro de série 10 base de données

127.0.0.1:6379>sélectionnez 10

D'ACCORD

(2)Passer au numéro de série 15 base de données

127.0.0.1:6379[10]>sélectionnez 15

D'ACCORD

(3)Passer au numéro de série 0 base de données

127.0.0.1:6379[15]>sélectionner 0

(2) Déplacement de données entre plusieurs bases de données

127.0.0.1:6379>ensemble k1 100 Créer k1 dans la base de données 0

D'ACCORD

127.0.0.1:6379>obtenir k1

"100"

127.0.0.1:6379>déplacer k1 1  // Déplacer k1 de la base de données 0 vers la base de données 1

(entier) 1

127.0.0.1:6379>sélectionner 1   // Passer à la base de données cible 1

D'ACCORD

127.0.0.1:6379[1]>obtenir k1   //Afficher les données déplacées

"100"

127.0.0.1:6379[1]> sélectionner 0

D'ACCORD

127.0.0.1:6379> obtenir k1         //La valeur de k1 ne peut pas être visualisée dans la base de données 0

(néant)

(3) Effacer les données dans la base de données

Pour effacer les données actuelles de la base de données, utilisez FLUSHDB

Implémentation de la commande ; effacer toutes les données de la base de données, utiliser CHASSE D'EAU Implémentation des commandes.

6. Persistance Redis

Redis Toutes les données sont stockées en mémoire, puis enregistrées de manière asynchrone sur le disque de temps en temps.(C'est appeléMode semi-persistant”); Vous pouvez également écrire chaque modification de données dans un ajouter uniquement le fichier (aof)dans(C'est appeléMode persistance complète”)

parce que Redis Toutes les données sont stockées en mémoire. Si la persistance n'est pas configurée,Redis Après le redémarrage, toutes les données sont perdues.Il est donc nécessaire d'activerRedis La fonction de persistance enregistre les données sur le disque. Quand. Redis Après un redémarrage, les données peuvent être récupérées à partir du disque.Redis Deux méthodes sont fournies pour la persistance, l'une est RDBBase de données Redis Persistance (le principe est de ReidVidage programmé des enregistrements de base de données en mémoire (décharge)sur le disque RDB persistance), l’autre est AOFajouter seulement déposerPersistance (le principe est de Reid Le journal des opérations est écrit dans le fichier en annexe).

La différence entre RDB et AOF

ROB écrit l'instantané des données sur le disque dans l'intervalle de temps spécifié. Il s'agit d'un sous-processus de fork. Il écrit d'abord les données dans un dossier temporaire, puis remplacera le fichier précédent et le stockera avec une compression binaire.

AOF enregistre chaque opération d'écriture et de suppression du serveur sous forme de journal. Les opérations de requête ne seront pas enregistrées, mais seront enregistrées sous forme de texte.

 

Avantages et inconvénients de RDB et AOF

Avantages du RDB :

RDB est un fichier binaire compact et compressé qui représente un instantané des données Redis à un moment donné. Il est très approprié pour la sauvegarde, la copie complète et d'autres scénarios. Par exemple, effectuez une sauvegarde bgsave toutes les 6 heures et copiez le fichier RDB sur la machine distante ou le système de fichiers pour une reprise après sinistre.

La récupération des données est rapide.

Maximiser les performances

Efficacité de démarrage élevée

RDBdéfaut:

Les données qui n'ont pas été enregistrées avant l'arrêt seront perdues.

       RDB est complété via le processus enfant fork, consommant des ressources.

Avantages AOF :

La durabilité des données est élevée

En mode ajout, le contenu du fichier journal ne sera pas détruit même en cas de temps d'arrêt.

Le mécanisme de réécriture peut être démarré pour protéger la sécurité des données.

Inconvénients de l'AOF :

La vitesse de récupération des données AOF est lente

L'efficacité du fonctionnement de l'AOF est faible

Critères de choix entre les deux :

Sacrifiez certaines performances en échange d'une plus grande cohérence du cache (AOF),

Lorsque les opérations d'écriture sont fréquentes, n'activez pas la sauvegarde en échange de performances supérieures et attendez une opération manuelle. sauvegarder quand, faites à nouveau une sauvegarde (RDB

Remarque:

Si redies doit charger un fichier de persistance après le redémarrage,prioritéLes fichiers AOF seront sélectionnés.

Si RDB est activé en premier, puis AOF est activé et que RDB est conservé en premier, le contenu du fichier RDB sera écrasé par AOF.

7. Configuration de la persistance Redis

(1) Configuration de la persistance RDB

[root@localhost ~]# vim /etc/redis/6379.conf

Ouvrir 6379.conf Après le fichier, recherchez sauvegarder, vous pouvez voir les informations de configuration comme indiqué ci-dessous.

  • save 900 1 : Après 900 secondes (15 minutes), si au moins 1 clé change, videz l'instantané de la mémoire.
  • save 300 10 : Après 300 secondes (5 minutes), si au moins 10 clés ont changé, videz l'instantané de la mémoire.
  • save 60 10000 : Après 60 secondes (1 minute), si au moins 10 000 clés ont été modifiées, videz l'instantané de la mémoire.
  • dbfilename dump.rdb : nom du fichier RDB ##254 ligne
  • dir /var/lib/redis/6379 : chemin du fichier RDB ##264 ligne
  • rdbcompression yes : s'il faut compresser la ligne ##242

(2) Configuration de la persistance AOF

exister Redis Il existe trois méthodes de synchronisation dans le fichier de configuration, elles sont :

  • appendonly ouiActiver la persistance AOF (la valeur par défaut est non) ##673 ligne
  • appendfilename "appendonly.aof " Nom du fichier AOF ##677 ligne
  • # appendfsync toujours
  • appendfsync toutes les secondes
  • # appendfsync non

toujours : persistance synchrone, chaque fois que les données changent, elles seront immédiatement écrites sur le disque ##702 ligne

everysec : recommandé par défaut, enregistre de manière asynchrone toutes les secondes (valeur par défaut)

non : pas de synchronisation, laissant au système d'exploitation le soin de décider comment synchroniser

  • aof-load-truncated oui ##769

Ignorer la dernière instruction potentiellement problématique

[root@localhost ~]#/etc/init.d/redis_6379 redémarrage

8. Problèmes de performances

(1) Afficher les informations sur la mémoire

192.168.9.236:7001> mémoire d'informations

mémoire_utilisée:1210776 Taille de la mémoire utilisée, en octets
mémoire_utilisée_humaine:1,15MAffiché avec les unités, en M
mémoire_utilisée_rss:7802880Quelle quantité de mémoire Redis occupe-t-il du point de vue du système d'exploitation ?
mémoire_utilisée_rss_humaine:7.44MAffichage avec unités
mémoire max:1073741824Taille maximale de la mémoire
maxmemory_human:1.00G Affichage avec unités

(2) Stratégie de recyclage

politique de mémoire maximale: Stratégie de recyclage

 volatile-lru: il permet Redis Choisissez le moins récemment utilisé dans l'ensemble des données clé Supprimer

 volatile-ttlSupprimer en fonction du délai d'expiration de la clé 

 volatile-aléatoire: Sélectionnez aléatoirement les données à éliminer de la collecte de données avec un délai d'expiration défini ;

 allkeys-lru:utiliser LRU Les algorithmes éliminent les données de tous les ensembles de données ;

 allkeys-aléatoire: Sélectionner au hasard les données à éliminer de la collecte de données ;

 pas d'éviction: Désactiver l'élimination des données (valeur par défaut)

Définir le délai d'expiration de la clé

127.0.0.1:6379>expire v1 10 La v1 a un délai d'expiration de 10 secondes

Remarque:

quand Redis Besoin d'en récupérer un en raison de la pression de la mémoire clé heure,Redis La première considération n’est pas de recycler les données les plus anciennes, mais les données les moins récemment utilisées. clé ou sur le point d'expirer clé Choisissez-en un au hasard parmi clé, supprimé de l'ensemble de données