Maison  >  Article  >  base de données  >  Comment résoudre le problème lorsque la mémoire Redis est pleine

Comment résoudre le problème lorsque la mémoire Redis est pleine

尚
original
2019-07-05 15:13:306625parcourir

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!

Déclaration:
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
Article précédent:Comment configurer RedisArticle suivant:Comment configurer Redis