Lors de l'utilisation de Redis comme cache, si l'espace mémoire est plein, les anciennes données seront automatiquement expulsées. Memcached fonctionne de cette façon par défaut et la plupart des développeurs le connaissent. LRU est le seul algorithme de recyclage pris en charge par Redis
Stratégie d'expulsion (Apprentissage recommandé : Tutoriel vidéo Redis)
Lorsque la limite maximale de mémoire (maxmemory) est atteinte, Redis détermine le comportement spécifique en fonction de la politique configurée par maxmemory-policy.
Dans la version actuelle, les stratégies prises en charge par Redis 3.0 incluent :
noeviction : Ne supprimez pas la stratégie lorsque la limite maximale de mémoire est atteinte, si plus de mémoire est nécessaire, renvoyez directement le message d'erreur. La plupart des commandes d'écriture entraîneront une occupation de plus de mémoire (à de rares exceptions près, telles que DEL).
allkeys-lru : commun à toutes les clés ; supprimez d'abord les clés les moins récemment utilisées (LRU).
volatile-lru : limité uniquement à la partie où l'expiration est définie ; supprimez d'abord la clé la moins récemment utilisée (LRU).
allkeys-random : Commun à toutes les clés ; supprime aléatoirement certaines clés.
volatile-random : limité uniquement à la partie où l'expiration est définie ; supprimez aléatoirement certaines clés.
volatile-ttl : limité uniquement à la partie où l'expiration est définie ; les clés avec un temps restant court (durée de vie, TTL) seront supprimées en premier.
Si la clé d'expiration n'est pas définie et que les conditions préalables ne sont pas remplies ; alors le comportement des stratégies volatile-lru, volatile-random et volatile-ttl est fondamentalement le même que celui de la noeviction (pas de suppression).
Vous devez choisir une stratégie d'expulsion appropriée en fonction des caractéristiques du système. Bien entendu, vous pouvez également définir dynamiquement la politique d'expulsion via des commandes pendant le fonctionnement et surveiller les échecs et les accès au cache via la commande INFO pour le réglage.
De manière générale :
S'il est divisé en données chaudes et données froides, il est recommandé d'utiliser la stratégie allkeys-lru. Autrement dit, certaines clés sont souvent lues et écrites. Si vous n'êtes pas sûr des caractéristiques spécifiques de l'entreprise, alors allkeys-lru est un bon choix.
Si vous devez lire et écrire toutes les clés en boucle, ou si la fréquence d'accès de chaque clé est similaire, vous pouvez utiliser la stratégie allkeys-random, c'est-à-dire que la probabilité de lire et d'écrire tous les éléments est presque pareil.
Si vous souhaitez que Redis filtre les clés qui doivent être supprimées en fonction de la durée de vie, veuillez utiliser la stratégie volatile-ttl.
Les principaux scénarios d'application des stratégies volatile-lru et volatile-random sont : les instances avec à la fois du cache et des clés persistantes. De manière générale, pour des scénarios comme celui-ci, deux instances Redis distinctes doivent être utilisées.
Il convient de mentionner que la définition de l'expiration consommera de la mémoire supplémentaire, donc l'utilisation de la stratégie allkeys-lru peut faire une utilisation plus efficace de la mémoire, car de cette manière, le délai d'expiration ne peut plus être défini.
Pour plus d'articles techniques liés à Redis, veuillez visiter la colonne Introduction au didacticiel d'utilisation de la base de données Redis pour apprendre !
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!