Maison > base de données > Redis > le corps du texte

Comment résoudre le problème de mémoire insuffisante lors de l'utilisation de Redis en php

WBOY
Libérer: 2023-06-01 16:37:12
avant
1060 Les gens l'ont consulté

Solution à la mémoire insuffisante de PHP à l'aide de redis : 1. Définissez la taille maximale de la mémoire de Redis à 100 Mo via le fichier de configuration ou la commande ; 2. Obtenez la stratégie d'élimination de mémoire actuelle 3. Via "config set maxmemory-policy ; allkeys-lru" Il suffit de commander pour modifier la stratégie d'élimination.

Taille de la mémoire occupée par Redis

Nous savons que Redis est une base de données clé-valeur basée sur la mémoire. La taille de la mémoire du système étant limitée, nous pouvons configurer la taille de mémoire maximale que Redis peut utiliser lors de l'utilisation de Redis. .

1. Configurez via le fichier de configuration

Définissez la taille de la mémoire en ajoutant la configuration suivante dans le fichier de configuration redis.conf sous le répertoire d'installation de Redis

//Définissez la taille de mémoire maximale occupée par Redis sur 100 Mo maxmemory 100 Mo.

Configuration redis Le fichier n'utilise pas nécessairement le fichier redis.conf sous le répertoire d'installation Lors du démarrage du service redis, vous pouvez passer un paramètre pour spécifier le fichier de configuration redis

2. Modifier via les commandes

Redis prend en charge. modification dynamique via des commandes pendant l'exécution Taille de la mémoire

//Définissez la taille de mémoire maximale occupée par Redis à 100 Mo 127.0.0.1:6379> config set maxmemory 100mb //Obtenez la taille de mémoire maximale que Redis peut utiliser 127.0.0.1:6379> get maxmemory

Si vous ne définissez pas la taille maximale de la mémoire ou définissez la taille maximale de la mémoire sur 0. Il n'y a pas de limite à la taille de la mémoire sous un système d'exploitation 64 bits. Un maximum de 3 Go de mémoire peut être utilisé sous un système d'exploitation 32 bits. système.

Élimination de la mémoire Redis

Maintenant que vous pouvez définir la taille maximale de la mémoire occupée par Redis, la mémoire configurée sera utilisée. Ensuite, lorsque la mémoire sera épuisée, n'y aura-t-il pas de mémoire disponible si nous continuons à ajouter des données à Redis ? En fait, Redis définit plusieurs stratégies pour gérer cette situation : noeviction (stratégie par défaut) : Ne fournit plus de services pour les requêtes d'écriture et renvoie directement une erreur (sauf pour les requêtes DEL et certaines requêtes spéciales) allkeys-lru : From Use l'algorithme LRU pour éliminer de toutes les clés volatile-lru : utiliser l'algorithme LRU pour éliminer les clés avec un délai d'expiration défini allkeys-random : éliminer de manière aléatoire les données de toutes les clés volatile-random : éliminer des clés avec un délai d'expiration défini Élimination aléatoire parmi les clés temporelles volatile-ttl : Parmi les clés avec un délai d'expiration défini, elles seront éliminées en fonction du délai d'expiration de la clé. Plus la date d'expiration est précoce, plus la priorité sera éliminée

Lors de l'utilisation de . volatile-lru, volatile- Lors de l'utilisation des trois stratégies random et volatile-ttl, si aucune clé ne peut être éliminée, la même erreur sera renvoyée que noeviction

Comment obtenir et configurer la mémoire stratégie d'élimination

Obtenez la stratégie d'élimination de mémoire actuelle :

127.0.0.1:6379> config get maxmemory-policy

Définissez la politique d'élimination via le fichier de configuration (modifiez le fichier redis.conf) :

maxmemory-policy allkeys -lru

Modifiez la politique d'élimination via la commande :

127.0.0.1:6379> ; config set maxmemory-policy allkeys-lru

Algorithme LRU

Qu'est-ce que LRU ?

Il est mentionné ci-dessus que le La mémoire maximale disponible pour Redis est épuisée et l'algorithme LRU peut être utilisé pour éliminer la mémoire, alors qu'est-ce que LRU ? Et les algorithmes ?

LRU (Least Récemment Utilisé), qui est le moins récemment utilisé, est un algorithme de remplacement de cache. Lors de l'utilisation de la mémoire comme cache, la taille du cache est généralement fixe. Lorsque le cache est plein et que vous continuez à ajouter des données au cache, vous devez éliminer certaines anciennes données et libérer de l'espace mémoire pour stocker de nouvelles données. A ce stade, vous pouvez utiliser l'algorithme LRU. L'idée centrale est la suivante : si une donnée n'a pas été utilisée au cours de la période récente, la possibilité d'être utilisée à l'avenir est très faible, elle peut donc être éliminée.

Implémentation de LRU dans Redis

Algorithme LRU approximatif

Redis utilise l'algorithme LRU approximatif, qui n'est pas le même que l'algorithme LRU conventionnel. L'algorithme LRU approximatif élimine les données par échantillonnage aléatoire, en sélectionnant au hasard 5 clés (par défaut) à chaque fois et en éliminant les clés les moins récemment utilisées.

Vous pouvez modifier le nombre d'échantillons via le paramètre maxmemory-samples : Exemple : maxmemory-samples 10 Plus la configuration maxmenory-samples est grande, plus le résultat de l'élimination est proche de l'algorithme LRU strict

Afin d'implémenter le LRU approximatif algorithme, Redis ajoute une augmentation à chaque clé. Un champ supplémentaire de 24 bits est ajouté pour stocker la dernière fois que la clé a été accédée.

Quels sont les outils pour créer un environnement de développement PHP ?

1. phpStudy est l'environnement de développement le plus couramment utilisé pour les débutants.

Deuxièmement, WampServer, WampServer est également aussi simple à utiliser que phpStudy et plus convivial pour les novices.

3. XAMPP, XAMPP (Apache+MySQL+PHP+PERL) est un puissant logiciel de création de sites Web intégré

4 MAMP, MAMP est divisé en deux types : MAMP et MAMP Pro pour Mac.

5. Pagoda Panel, Pagoda Panel est un logiciel de gestion de serveur qui prend en charge les systèmes Windows et Linux.

6. UPUPW, UPUPW est actuellement la suite PHP de serveur Web la plus distinctive sous la plate-forme Windows.

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!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!