base de données
Redis
Trois méthodes de stratégie de suppression Redis et analyse d'exemples d'algorithmes d'expulsion
Trois méthodes de stratégie de suppression Redis et analyse d'exemples d'algorithmes d'expulsion
1. Préface
Avant de commencer l'article, laissez-moi vous poser une question : Lorsque nous utilisons la commande : expire key second给一个key设置过期时间,过期时间一到,这个key对应的过期数据Est-elle vraiment supprimée immédiatement par le serveur ? La réponse est qu’il ne sera pas supprimé immédiatement. Connaissant cette réponse, examinons comment les données expirées sont traitées dans Redis.
2. Caractéristiques des données dans Redis
Redis est une base de données au niveau de la mémoire. Toutes les données sont stockées dans la mémoire. Les données dans la mémoire peuvent obtenir leur statut via des instructions TTL :
| Statut | |||
|---|---|---|---|
| Données temporelles | |||
| Données valides en permanence | |||
| Données expirées ou données supprimées ou données non définies |
2. Suppression paresseuse |
Les données atteignent le délai d'expiration et ne seront pas traitées. Lors du prochain accès aux données, la fonction expireIfNeeded() sera appelée pour déterminer si les données ont expiré : si elles n'ont pas expiré, renvoyez les données, trouvez qu'elles ont expiré, supprimez-les et le retour n'existe pas |
||
|---|---|---|---|
| Inconvénients :Pression élevée de la mémoire, données qui prend de la mémoire pendant longtemps apparaît | ![]() |
||
| Analyse du processus : | Lorsque le serveur Redis démarre et initialise, lisez la valeur de la configuration server.hz, la valeur par défaut est 10 | Ensuite, la méthode |
serverCron() appellera à son tour la méthode databasesCron(), cette méthode est utilisée pour parcourir la base de données Redis a 16 bases de données par défaut, à partir de la. la première méthode database🎜🎜🎜🎜databasesCron() appellera la méthode activeExpireCycle(), cette méthode détectera chaque expire[*] un par un , exécutant 250ms/server.hz à chaque fois ; pendant un certain expire[* ] Pendant la détection, sélectionnez au hasard les clés W pour la détection🎜🎜🎜🎜Si le délai d'expiration de la clé est détecté, supprimez la clé ; si le nombre de clés supprimées en un tour > W25%, bouclez le processus ; si en un tour le nombre de clés supprimées est
🎜- 🎜🎜
Résumé : Interrogez périodiquement les données opportunes dans la bibliothèque Redis, adoptez une stratégie d'extraction aléatoire et utilisez la proportion des données expirées pour contrôler la fréquence de suppression 🎜🎜🎜🎜La pression mémoire n'est pas très élevée, les données froides qui occupent la mémoire depuis longtemps seront nettoyées en continu 🎜🎜🎜🎜 5. Comparaison des stratégies de suppression 🎜🎜🎜🎜🎜Suppression régulière 🎜🎜 économise de la mémoire, aucune occupation 🎜🎜 peu importe Les périodes occupent les ressources du processeur, haute fréquence🎜🎜Temps d'échange contre de l'espace🎜🎜🎜🎜Suppression paresseuse🎜🎜Utilisation importante de la mémoire🎜🎜Exécution retardée, utilisation élevée du processeur🎜🎜Echange d'espace contre du temps🎜🎜 🎜🎜Suppression régulière🎜🎜Mémoire Nettoyage aléatoire régulier🎜🎜dépense des ressources CPU fixes par seconde pour maintenir la mémoire🎜🎜vérifications ponctuelles aléatoires et ciblées🎜🎜🎜🎜6. Algorithme d'expulsion
1. Introduction au concept
Que faire si la mémoire est insuffisante lorsque de nouvelles données entrent dans Redis ? Redis utilise la mémoire pour stocker les données. Avant d'exécuter chaque commande, freeMemoryIfNeeded() sera appelé pour vérifier si la mémoire est suffisante. Si la mémoire ne répond pas aux exigences minimales de stockage pour les données nouvellement ajoutées, redis supprimera temporairement certaines données pour libérer de l'espace de stockage pour l'instruction en cours. La stratégie de nettoyage des données s’appelle l’algorithme d’expulsion. freeMemoryIfNeeded()检测内存是否充足。如果内存不满足新加入数据的最低存储要求,redis要临时删除一些数据为当前指令清理存储空间。清理数据的策略称为逐出算法。
注意:逐出数据的过程不是100%能够清理出足够的可使用的内存空间,如果不成功则反复执行。当对所有数据尝试完毕后,如果不能达到内存清理的要求,将出现错误信息。

2、八种配置
检测易失数据(可能会过期的数据集server.db[i].expires )
| volatile-lru | 挑选最近最少使用的数据淘汰 |
|---|---|
| volatile-lfu | 挑选最近使用次数最少的数据淘汰 |
| volatile-ttl | 挑选将要过期的数据淘汰 |
| volatile-random | 任意选择数据淘汰 |
检测全库数据(所有数据集server.db[i].dict
| 2. Huit configurations |
|---|---|
| volatile-lru | |
| volatile-lfu |
volatile-ttl
| volatile-random | Choisissez les données à éliminer |
|---|
tous les ensembles de données server.db[i].dict)🎜🎜🎜🎜🎜allkeys-lru🎜🎜Sélectionner les données les moins récemment utilisées à éliminer🎜🎜🎜🎜allkeys- lfu 🎜🎜Choisissez les données les moins récemment utilisées pour l'élimination🎜🎜🎜🎜allkeys-random🎜🎜Toute sélection de données pour l'élimination🎜🎜🎜🎜🎜🎜abandonner l'expulsion des données : 🎜🎜🎜🎜🎜🎜no-enviction🎜 🎜 interdire l'expulsion des données (stratégie par défaut redis4 .0)🎜🎜🎜🎜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!
Outils d'IA chauds
Undress AI Tool
Images de déshabillage gratuites
Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes
AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.
Clothoff.io
Dissolvant de vêtements AI
Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !
Article chaud
Outils chauds
Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit
SublimeText3 version chinoise
Version chinoise, très simple à utiliser
Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP
Dreamweaver CS6
Outils de développement Web visuel
SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)
Sujets chauds
Points d'optimisation de Laravel8
Apr 18, 2025 pm 12:24 PM
Laravel 8 fournit les options suivantes pour l'optimisation des performances: Configuration du cache: utilisez Redis pour cache des pilotes, des façades de cache, des vues de cache et des extraits de page. Optimisation de la base de données: établissez l'indexation, utilisez la portée de la requête et utilisez des relations éloquentes. Optimisation JavaScript et CSS: utilisez le contrôle de version, fusionnez et rétractable, utilisez CDN. Optimisation du code: utilisez le package d'installation du compositeur, utilisez les fonctions Laravel Helper et suivez les normes PSR. Surveillance et analyse: utilisez Laravel Scout, utilisez le télescope, surveillez les mesures d'application.
Comment utiliser la solution Redis Cache pour réaliser efficacement les exigences de la liste de classement des produits?
Apr 19, 2025 pm 11:36 PM
Comment la solution de mise en cache Redis réalise-t-elle les exigences de la liste de classement des produits? Pendant le processus de développement, nous devons souvent faire face aux exigences des classements, comme l'affichage d'un ...
Que faire si le cache Redis échoue dans Spring Boot?
Apr 19, 2025 pm 08:03 PM
Dans Springboot, utilisez Redis pour mettre en cache l'objet OAuth2Authorisation. Dans l'application Springboot, utilisez SpringSecurityoAuth2AuthorizationsServer ...
Les meilleurs packs d'extension de Laravel recommandés: 2024 outils essentiels
Apr 30, 2025 pm 02:18 PM
Les packages d'extension Laravel essentiels pour 2024 incluent: 1. Laraveldebugbar, utilisé pour surveiller et déboguer le code; 2. Laraveltelescope, fournissant une surveillance détaillée des applications; 3. Laravelhorizon, gérant les tâches de file d'attente Redis. Ces packs d'extension peuvent améliorer l'efficacité du développement et les performances des applications.
Construction de l'environnement Laravel et configuration de base (Windows / Mac / Linux)
Apr 30, 2025 pm 02:27 PM
Les étapes pour créer un environnement Laravel sur différents systèmes d'exploitation sont les suivantes: 1.Windows: Utilisez XAMPP pour installer PHP et compositeur, configurer les variables environnementales et installer Laravel. 2.MAC: Utilisez Homebrew pour installer PHP et Composer et installer Laravel. 3.Linux: utilisez Ubuntu pour mettre à jour le système, installer PHP et compositeur et installer Laravel. Les commandes et chemins spécifiques de chaque système sont différents, mais les étapes de base sont cohérentes pour assurer la construction fluide de l'environnement de développement de Laravel.
Rôle de Redis: Explorer les capacités de stockage et de gestion des données
Apr 22, 2025 am 12:10 AM
Redis joue un rôle clé dans le stockage et la gestion des données, et est devenu le cœur des applications modernes à travers ses multiples structures de données et mécanismes de persistance. 1) Redis prend en charge les structures de données telles que les chaînes, les listes, les collections, les collections ordonnées et les tables de hachage, et convient au cache et à la logique métier complexe. 2) Grâce à deux méthodes de persistance, RDB et AOF, Redis assure un stockage fiable et une récupération rapide des données.
Dans un environnement multi-nœuds, comment s'assurer que la tâche de synchronisation @Scheduled de Spring Boot est exécutée uniquement sur un seul nœud?
Apr 19, 2025 pm 10:57 PM
La solution d'optimisation pour les tâches de synchronisation Springboot dans un environnement multi-nœuds développe le ressort ...
Comment choisir une base de données Gitlab dans CentOS
Apr 14, 2025 pm 05:39 PM
Lors de l'installation et de la configuration de GitLab sur un système CentOS, le choix de la base de données est crucial. Gitlab est compatible avec plusieurs bases de données, mais PostgreSQL et MySQL (ou MARIADB) sont le plus couramment utilisés. Cet article analyse les facteurs de sélection de la base de données et fournit des étapes détaillées d'installation et de configuration. Guide de sélection de la base de données Lors du choix d'une base de données, vous devez considérer les facteurs suivants: PostgreSQL: la base de données par défaut de GitLab est puissante, a une évolutivité élevée, prend en charge les requêtes complexes et le traitement des transactions et convient aux grands scénarios d'application. MySQL / MARIADB: une base de données relationnelle populaire largement utilisée dans les applications Web, avec des performances stables et fiables. MongoDB: base de données NoSQL, se spécialise dans






