Maison >développement back-end >Problème PHP >Que dois-je faire si PHP utilise Redis et que la mémoire est insuffisante ?
Solution à la mémoire insuffisante lorsque PHP utilise 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. Modifiez-la via le "config set maxmemory-policy ; allkeys-lru" commande Éliminez simplement la stratégie.
本教程操作环境:windows7系统、PHP8.1版、Dell G3电脑。
我们知道Redis是基于内存的key-value数据库,因为系统的内存大小有限,所以我们在使用Redis的时候可以配置Redis能使用的最大的内存大小。
2.//设置Redis最大占用内存大小为100M 127.0.0.1:6379> config set maxmemory 100 Mo //获取设置的Redis能使用的最大内存大小 127.0.0.1:6379> config get maxmemory大小,在32位操作系统下最多使用3GB内存
noeviction(默认策略)
:对于写请求不再提供服务,直接返回错误(DEL请求和部分特殊请求除外)allkeys-lru:从所有key中使用LRU算法进行淘汰
volatile-random:从设置了过期时间的key中随机淘汰volatile -ttl:在设置了过期时间的key中,根据key的过期时间进行淘汰,越早过期的越优先被淘汰当使用 volatile-lru、 volatile-random、 volatile-ttl这三种策略时,如果没有key可以被淘汰,则和 noeviction
一样返回错误如何获取及设置内存淘汰策略获取当前内存淘汰策略:127.0.0.1:6379> config get maxmemory-policy改淘汰策略:127.0.0.1:6379> config set maxmemory-policy allkeys-lru完了,是可以使用LRU算法进行内存淘汰的,那么什么是LRU算法
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.
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 valeur supplémentaire à 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.
Apprentissage recommandé : "Tutoriel vidéo PHP"
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!