Maison > Article > base de données > Comment résoudre le problème lorsque la mémoire Redis est pleine
La mémoire Redis est pleine Solution :
1, augmentez la mémoire.
2. Utilisez la stratégie d’élimination de la mémoire.
3, cluster Redis.
Focus sur 2 et 3 :
Deuxième point :
Nous savons que le paramètre maxmemory du fichier de configuration redis peut contrôler sa taille maximale de mémoire disponible (octets).
Alors, que dois-je faire lorsque la mémoire requise dépasse la mémoire maximale ?
À ce moment, la politique maxmemory dans le fichier de configuration entre en jeu.
La valeur par défaut est noeviction.
Ci-dessous, je vais lister les règles d'élimination pour supprimer les clés Redis lorsque la mémoire disponible est insuffisante.
Description de la règle :
1. volatile-lru
Utilisez l'algorithme LRU pour supprimer une clé (uniquement pour les clés avec un temps de survie défini)
2. allkeys-lru
Utilisez l'algorithme LRU pour supprimer une clé
3. volatile-random
Supprimez une clé de manière aléatoire (uniquement pour les clés avec une durée de survie définie)
4. allkeys-random
Supprimer une clé au hasard
5. volatile-ttl
Supprimer la clé avec la dernière durée de survie
6. noeviction
Ne supprime pas la clé, renvoie uniquement une erreur
Algorithme LRU, algorithme le moins récemment utilisé, algorithme le moins récemment utilisé. C'est-à-dire que la clé la moins récemment utilisée est supprimée par défaut.
Mais vous devez faire attention à une chose ! Redis ne supprime pas avec précision la clé la moins récemment utilisée parmi toutes les clés, mais sélectionne au hasard 3 clés et supprime la clé la moins récemment utilisée parmi ces trois clés.
Ensuite, le numéro 3 peut également être défini et l'emplacement correspondant est maxmeory-samples dans le fichier de configuration.
3 Comment faire le cluster
Redis ne prend en charge que instance unique, mémoire généralement jusqu'à 10 ~ 20 Go. Pour les systèmes dotés de 100 à 200 Go de mémoire, cela doit être pris en charge via le clustering.
Il existe trois méthodes de clustering Redis : le partage client, le partage proxy et RedisCluster (plus d'informations à ce sujet dans un article ultérieur.)
1. Partage client
Implémenter le routage. par vous-même via le code métier
Avantages : vous pouvez contrôler vous-même l'algorithme de partitionnement et les performances sont meilleures que celles du proxy
Inconvénients : coûts de maintenance élevés, expansion/réduction et autres opérations et les opérations de maintenance doivent être effectuées par vous-même Recherche et développement
2. Partage d'agent
Le programme d'agent reçoit les demandes de données du programme métier et distribue ces demandes à l'instance Redis appropriée en fonction de règles de routage et les renvoie au programme métier. Implémenté à l'aide de middleware tels que Twemproxy et Codis.
Avantages : opération et maintenance faciles, le programme n'a pas à se soucier de la façon de lier les instances Redis
Inconvénients : cela entraînera une consommation de performances (environ 20 %), ne peut pas s'étendre/rétrécir en douceur , et doit exécuter des scripts pour migrer les données, ce qui est peu pratique (Codis optimise et implémente le pré-sharding basé sur Twemproxy pour réaliser un rééquilibrage automatique).
3. Redis Cluster
Avantages : Solution de cluster officielle, pas de nœud central, connexion directe au client, meilleures performances
Inconvénients : La solution est trop lourde et ne peut pas être L'expansion/réduction lissée nécessite l'exécution des scripts correspondants, ce qui est peu pratique, trop nouveau et il n'existe pas de solutions matures correspondantes
Pour plus de connaissances sur Redis, veuillez visiter le Tutoriel d'utilisation de Redis colonne!
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!