Partage de technologie

03-Configuration et optimisation NoSQL Redis

2024-07-12

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

1. Comparaison globale entre Redis et Memcache

1.Performances

Redis : n'utilise qu'un seul cœur. En moyenne, Redis a des performances supérieures à celles de Memcached lors du stockage de petites données sur chaque cœur.

Memcached : vous pouvez utiliser plusieurs cœurs et, dans les données de plus de 100 000 m, les performances de Memcached sont supérieures à celles de Redis.

2. Efficacité de l'utilisation de la mémoire

MemCached : grâce à un simple stockage clé-valeur, Memcached a une utilisation de la mémoire plus élevée.

Redis : si une structure de hachage est utilisée pour le stockage clé-valeur, son utilisation de la mémoire sera supérieure à celle de Memcached en raison de sa compression combinée.

3. Espace mémoire et taille des données

MemCached : La mémoire maximale peut être modifiée, en utilisant l'algorithme LRU. La taille d'une seule valeur-clé dans Memcached est limitée et une valeur ne prend en charge qu'un maximum de 1 Mo.

Redis : ajoute des fonctionnalités de VM et dépasse les limitations de la mémoire physique. Redis prend en charge une taille de valeur-clé unique maximale de 512 Mo.

4. Prise en charge de la structure des données

MemCached : structure de données unique, utilisée uniquement pour mettre en cache les données.

Redis : prend en charge des types de données plus riches. Redis prend non seulement en charge les données de type k/v simples, mais fournit également le stockage de structures de données telles que liste, ensemble, zset et hachage.

Des opérations riches sur les données peuvent être effectuées directement côté serveur, ce qui peut réduire les temps d'E/S du réseau et le volume de données.

5.Fiabilité

Memcached : il s'agit simplement d'un cache mémoire avec de faibles exigences de fiabilité. MemCached ne prend pas en charge la persistance des données. Les données disparaissent après une panne de courant ou un redémarrage, mais la stabilité est garantie.

Redis : a des exigences de fiabilité élevées, prend en charge la persistance et la récupération des données, autorise des points de défaillance uniques et affecte également certaines performances. Prend en charge la sauvegarde des données, c'est-à-dire la sauvegarde des données en mode maître-esclave. Redis prend en charge la persistance des données. Il peut enregistrer les données en mémoire sur le disque et les charger à nouveau pour les utiliser lors du redémarrage.

6. Scénarios d'application

Memcached : réduit la charge de la base de données et améliore les performances dans les systèmes dynamiques ; cache, adapté à des scénarios de lecture accrue, moins d'écriture et de volumes de données importants.

Redis : convient aux systèmes qui nécessitent une efficacité de lecture et d'écriture élevée, des activités de traitement de données complexes et des exigences de sécurité élevées.

2. Cas expérimentaux

1.installation de Redis

Éteignez d'abord le pare-feu

  1. 先把防火墙关掉
  2. systemctl stop firewalld
  3. set setenforce 0
  4. [root@localhost ~]# yum -y install gcc* zlib-devel
  5. 解压 redis包
  6. [root@localhost ~]# tar xvzf redis-4.0.9.tar.gz
  7. [root@localhost ~]# cd redis-4.0.9/
  8.  make

  1. 2:查看进程
  2. [root@localhost utils]# netstat -anpt | grep redis

  1. 3:redis服务控制
  2. [root@localhost ~]#/etc/init.d/redis_6379 stop
  3. [root@localhost ~]#/etc/init.d/redis_6379 start
  4. [root@localhost ~]#/etc/init.d/redis_6379 restart
  5. [root@localhost ~]#/etc/init.d/redis_6379 status

  1. 4.配置参数的修改
  2. [root@localhost ~]#vim /etc/redis/6379.conf
  3. bind 127.0.0.1 192.168.10.101 //监听的主机地址
  4. port 6379 //端口
  5. daemonize yes //启用守护进程
  6. pidfile /var/run/redis_6379.pid //指定 PID 文件
  7. loglevel notice //日志级别
  8. logfile /var/log/redis_6379.log //指定日志文件
  9. [root@localhost~]#/etc/init.d/redis_6379 restart
  10. [root@localhost utils]# netstat -anpt | grep redis

  1. 二:Redis 命令工具
  2.  redis-server:用于启动 Redis 的工具;
  3.  redis-benchmark:用于检测 Redis 在本机的运行效率;
  4.  redis-check-aof:修复 AOF 持久化文件;
  5.  redis-check-rdb:修复 RDB 持久化文件;
  6.  redis-cli:Redis 命令行工具。

Commandes Redis courantes :

définir créer
obtenir une vue
clés * tout voir
renommer (écrasera)
renamenx (vérifiez s'il y a le même nom, puis décidez si vous souhaitez exécuter la commande rename,)
del (la commande peut supprimer la clé spécifiée de la base de données actuelle)
existe (la commande peut déterminer si la valeur clé existe)
type (utilisez la commande type pour obtenir le type de valeur correspondant à la clé)
sélectionner (changer de base de données)
déplacer (déplacer des données)
flushdb (effacer les données actuelles de la base de données)
flushall (effacer toutes les données de la base de données)

  1.  -p:指定服务器端口;
  2.  -s:指定服务器 socket;
  3.  -c:指定并发连接数;
  4.  -n:指定请求数;
  5.  -d:以字节的形式指定 SET/GET 值的数据大小;
  6.  -k:1=keep alive 0=reconnect;
  7.  -r:SET/GET/INCR 使用随机 key, SADD 使用随机值;
  8.  -P:通过管道传输<numreq>请求;
  9.  -q:强制退出 redis。仅显示 query/sec 值;
  10.  --csv:以 CSV 格式输出;
  11.  -l:生成循环,永久执行测试;
  12.  -t:仅运行以逗号分隔的测试命令列表;
  13.  -I:Idle 模式。仅打开 N 个 idle 连接并等待。

Cinq : 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 ReidCalendrier de journalisation de la base de données en mémoire décharge sur le disque RDB persistance), l’autre est AOFajouter uniquement le fichierPersistance (le principe est de Reid Le journal des opérations est écrit dans le fichier en annexe).

1 : La différence entre RDB et AOF

(1) Qu’est-ce que le RDB ?

La méthode par défaut

La persistance RDB est le processus de génération d'un instantané des données de processus actuelles et de son enregistrement sur le disque dur. Le processus de déclenchement de la persistance RDB est divisé en déclenchement manuel et déclenchement automatique.

Mécanisme de déclenchement : Le déclenchement manuel correspond respectivement aux commandes save et bgsave.

Commande save : bloque le serveur Redis actuel jusqu'à ce que le processus RDB soit terminé. Pour les instances avec une grande quantité de mémoire, cela entraînera un blocage temporel. Non recommandé pour une utilisation dans des environnements en ligne.

Commande bgsave : le processus Redis exécute l'opération fork (fonction utilisée pour créer un processus) pour créer un processus enfant. Le processus de persistance RDB est responsable du processus enfant et se termine automatiquement une fois terminé. Le blocage ne se produit que pendant la phase de fork.

(2) Avantages et inconvénients du RDB :

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.

Redis charge RDB et récupère les données beaucoup plus rapidement que la méthode AOF.

Inconvénients du RDB :

Les données en mode RDB ne peuvent pas atteindre la persistance en temps réel/persistance de deuxième niveau. Parce que chaque fois que bgsave est exécuté, une opération fork est effectuée pour créer un processus enfant, ce qui est une opération lourde et le coût d'une exécution fréquente est trop élevé.

Les fichiers RDB sont enregistrés dans un format binaire spécifique. Au cours de l'évolution des versions Redis, il existe plusieurs formats de versions RDB. Il existe un problème selon lequel l'ancienne version du service Redis n'est pas compatible avec la nouvelle version du format RDB.

2. Qu'est-ce qu'AOF ?

Persistance AOF (append only file) : enregistrez chaque commande d'écriture dans un journal indépendant, puis réexécutez la commande dans le fichier AOF pour restaurer les données au redémarrage. La fonction principale d'AOF est de résoudre le problème de la persistance des données en temps réel. C'est désormais le courant dominant de la persistance Redis.

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 un fichier persistant doit être chargé après le redémarrage, 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.

3 : 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 changé, 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 yes : Activer 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

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

(2) Réécriture AOF

pour résoudre AOF Si la taille du fichier continue d'augmenter, les utilisateurs peuvent signaler Redis envoyer BGREWRITEAOFCommande.BGREWRITEAOF La commande sera supprimée via AOF commandes redondantes dans le fichier à remplacer (récrireAOFfichier, faire AOF Gardez la taille du fichier aussi petite que possible.

127.0.0.1:6379&gt; bgrewriteaof

La réécriture du fichier d'ajout en arrière-plan uniquement a commencé

# Lorsque le journal est BGREWRITEAOF,sipas d'appendfsync lors de la réécritureDéfini sur yes, ce qui signifie que les nouvelles opérations d'écriture ne seront pas synchronisées avec fsync, mais ne seront que temporairement stockées dans le tampon. , pour éviter les conflits d'opération d'E/S disque, attendez que la réécriture soit terminée avant d'écrire. La valeur par défaut dans Redis est non

no-appendfsync-on-rewrite non

# Lorsque la taille actuelle du fichier AOF est deux fois supérieure à celle du fichier AOF lors de la dernière réécriture du journal, l'opération BGREWRITEAOF se produit.

pourcentage de réécriture automatique aof 100

Remarque:

100Fait référenceau moinsLe taux de croissance du fichier fait référence au taux de croissance du fichier AOF actuel par rapport à la dernière réécriture.100c'est deux fois

#La valeur minimale du fichier AOF actuel pour exécuter la commande BGREWRITEAOF afin d'éviter des BGREWRITEAOF fréquents en raison de la petite taille du fichier au premier démarrage de Reids.

réécriture automatique aof taille minimale 64 Mo

Sixième : Gestion des performances

1 : Afficher les informations sur la mémoire

192.168.9.236:7001> mémoire d'informations

used_memory:1210776 #La taille de la mémoire utilisée,en octets
used_memory_human:1.15M # Affichage avec unité,dans M
used_memory_rss:7802880 # Quelle quantité de mémoire Redis occupe-t-il du point de vue du système d'exploitation ?
used_memory_rss_human:7.44M # Affichage avec unité
maxmemory:1073741824 # Taille maximale de la mémoire
maxmemory_human:1.00G # Affichage avec unité

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-ttlselonclédélai d'expiration pour l'élimination

Ø 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)

Remarque:

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

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

redis définir le mot de passe

1. Méthode de réglage

Méthode 1 : définissez le mot de passe via le fichier de configuration redis.conf

Recherchez le mot-clé requirepass, suivi du mot de passe. Il est commenté par défaut, c'est-à-dire qu'aucun mot de passe n'est requis par défaut, comme suit :

  

 Ouvrez le commentaire, définissez-le comme votre propre mot de passe et redémarrez

Méthode 2 : définir le mot de passe en nommant

Utilisez redis-cli pour vous connecter à redis et exécutez la commande suivante

config set requirepass 123456

Une fois l'exécution terminée, il n'est pas nécessaire de redémarrer. Vous devrez saisir votre mot de passe lorsque vous quitterez le client et vous reconnecterez.

2. Méthode de connexion

1. Entrez le mot de passe lors de la connexion

[root@localhost bin]# ./redis-cli -a 123456

2. Connectez-vous d'abord, puis entrez le mot de passe

[root@localhost bin]# ./redis-cli127.0.0.1:6379> auth 123456

3. Méthode de fermeture

[root@localhost bin]# ./redis-cli -a 123456 shutdown

4. Différence

1) Le mot de passe défini en modifiant le fichier de configuration prendra effet de manière permanente ; le mot de passe défini en utilisant la commande prendra effet temporairement et deviendra invalide après le redémarrage.

2) La modification du mot de passe défini dans le fichier de configuration nécessite un redémarrage pour prendre effet ; utilisez le mot de passe défini par la commande pour prendre effet après vous être déconnecté et reconnecté, et il deviendra invalide après le redémarrage.

3) La priorité de la commande est supérieure à la priorité du fichier de configuration