当前位置:网站首页>Redis - grande question clé
Redis - grande question clé
2022-07-02 06:24:00 【Seven Sea Healthy Man】
L'article précédent parlait deRedisLes points chauds dekeyQuestions,Cet article présenteRedisGrandKeyLa notion de problème,GrandKeyLa cause du problème、Grand danger et solutionKeyL'idée du problème;
1. Qu'est - ce quekey?Quelle taillekey?
En fait,"Grandkey"Ce nom,Il y a un malentendu,Le soi - disant grandkeyLe problème, c'est quekeyDevaluePlus gros.,Donc C'est essentiellement grandvalueQuestions;C'est bien,keySouvent fixe,Généralement basé surkeyPréfixe et attributs d'entreprise sont assemblés,EtvalueSouvent, ce n'est pas fixe,Modifié pendant l'exécution du service,Il est donc possible quevalueDevenir grand;
Imaginez un scénario,Musique en ligneAPPMoyenne,Une liste de chansons a de nombreuses collections d'utilisateurs,S'il y a une telle structure de données:
- La relation de cartographie entre la liste de chansons et l'utilisateur estredisStockage;
- redisDekeyC'est une liste de chansons.ID,Longueur contrôlable et petite;
- redisDevalueC'est ça.List,ListContient les utilisateurs qui suivent la liste de chansonsID;
- Les utilisateurs peuvent être nombreux,SikeyPour stocker tous les utilisateurs qui suivent la liste de chansonsID,Peut conduire àListLa longueur devient incontrôlable;
Je vois ce que c'est. keyLa question est!
Quel âge as - tu? value Je crois que c'est grand. keyEt alors??
Redis Il existe plusieurs structures de données communes , Chaque structure est plus grande keyDifférentes définitions,Habituellement avecKeyTaille etKey Le nombre de membres est déterminé globalement ,Par exemple:
- key Trop de données en soi :value- Oui.StringType,Value La taille des octets est supérieure à 10 KB;
- key Trop d'éléments de collection dans :value- Oui.ZSET、Hash、List、SetLorsque le type de collection est égal, Il compte plus de 1w- Oui.;
- Key Trop de données pour le membre dans :UnHashTypeKey,Son nombre de membres, bien que seulement1,000Mais ces membresValue(Valeur)La taille totale est100 MB
La définition ci - dessus n'est pas absolue ,Principalement basé survalue Nombre de membres et value Nombre d'octets pour déterminer , Les entreprises peuvent également définir des critères en fonction de leurs propres scénarios ;
2. GrandkeyLes dangers?
Nous le savons tous.,Redis Une caractéristique typique de : Le fil de travail de base est un seul fil .
Le traitement des tâches demandées dans un seul thread est en série , Je ne peux pas finir devant. , Je ne peux pas gérer ça plus tard. , Il en résulte également des données de mémoire dans l'architecture distribuée et CPULe déséquilibre;Donc,RedisGrandekey Peut causer les problèmes suivants :
- Exécution key Le client de la commande lui - même ,Augmentation significative du temps,Même le temps d'arrêt;
- RedisMémoire atteintemaxmemory Limite supérieure de la définition des paramètres , Cause un blocage opérationnel ou important KeyExpulsion, Même un débordement de mémoire (Out Of Memory).
- Exécution key Lors d'une opération de lecture ou de suppression connexe , Ça va être très occupé. Largeur de bandeEtCPU, Affecter d'autres clients sur le serveur ;
- Dans le cadre de l'architecture groupée,Grandkey Le stockage lui - même entraîne un déséquilibre des données fragmentées dans les systèmes distribués ,,CPU L'utilisation est également inégale , L'utilisation de la mémoire d'un fragment de données est beaucoup plus élevée que celle des autres , Impossible d'équilibrer les ressources de mémoire pour les partitions de données
- Grandkey Il fait parfois chaud. key, Opérations de lecture fréquentes ,La surface d'influence sera grande
- Exécution keyLors de la suppression,Dans la version basseredis Peut facilement causer un blocage prolongé de la bibliothèque principale , Cela peut entraîner une interruption de synchronisation ou un changement maître - esclave ;
Ça a l'air grand. key L'impact est encore évident ,Le plus typique est:Fil de blocage、Baisse de la concurrence、Cause client timeout、 Diminution du taux de réussite des services côté serveur ;
3. Grandkey Comment cela se produit généralement ?
Grandkey La conception de l'entreprise est souvent déraisonnable ,Pas prévuvaule Le problème de la croissance dynamique ;Cause bigkey Les causes des problèmes sont généralement :
- Utilisation dans des scénarios sans objet Redis,Facile à créerKeyDevalueTrop gros.,Si utiliséStringTypeKey Stockage de données binaires volumineuses ;
- Insuffisance de la planification et de la conception avant le lancement des activités ,Non, c'est vrai.Key Une répartition raisonnable des membres dans key Devenir petit key, De sorte que les individus Key Trop de membres dans ;
- La structure des données de la classe set a toujours été value Données du bouchon intérieur , Aucun mécanisme de suppression , Données invalides non nettoyées périodiquement , Par exemple HASHTypeKey Augmentation continue du nombre de membres ;
- UtiliserLISTTypeKey Erreur de Code du côté de la consommation d'entreprise de , Créer une correspondance Key Augmentation ou diminution du nombre de membres ;
4. Comment trouver Bigkey?
(1)Augmenter la mémoire&Flux& Surveillance des indicateurs tels que les délais
À cause de BigkeyDevalueC'est énorme., Le thread peut être bloqué lors de la lecture ,Voilà.RedisTotalQPSÇa va tomber., Et le temps d'arrêt du client augmente , La largeur de bande du réseau augmentera , Configurer ces alarmes nous permet de découvrir keyL'existence de;
(2)bigkeysLes ordres
Utiliserbigkeys Les commandes sont analysées de façon transversale RedisTous dans l'InstanceKey, Et renvoie les statistiques globales avec chaque type de données Top1GrandeKey;
(3)redis-rdb-tools
Redis-rdb-toolsC'est parPythonCompilation, Prise en charge de l'analyse personnalisée Redis RDB Outil open source pour les fichiers Snapshot ;Utiliserredis-rdb-tools Outil d'analyse hors ligne pour scanner RDBFichiers persistants, Bien que le temps réel soit un peu faible , Mais complètement hors ligne n'a aucun effet sur les performances ;
(4) Outils de visualisation intégrés
Basé sur certains nuages publics ou l'architecture interne de l'entreprise redis Il y a généralement des pages visuelles et des outils d'analyse , Pour nous aider à nous positionner key, Bien sûr, le bas de la page peut également être basé sur bigkeysOurdb Résultats de l'analyse hors ligne du fichier ;
5. Grande manipulation keyL'idée du problème?
Selon bigkey L'utilisation pratique peut être divisée en deux situations : Amovible et non amovible ; La solution est la suivante: :
(1)Supprimer/ Grand nettoyage key
Si vous trouvez quelque chose de grand key Pas chaud. keyJuste là.DB Utilisation de la requête moyenne ,Peut êtreRedisSupprimer dans;
- QuandRedisVersion supérieure à4.0Heure,Disponible enUNLINK La commande supprime en toute sécurité Big Key, La commande peut être non bloquée , Nettoyer progressivement les Key;
- QuandRedisVersion inférieure à4.0Heure, Évitez les commandes bloquées KEYS, C'est une recommandation pour adoption. SCAN Commande pour effectuer un balayage itératif incrémental key, Puis jugez pour supprimer ;
Redis UNLINK Commande similaire à DEL Les ordres, Indique la suppression d'un key,Si spécifié key N'existe pas, La commande est ignorée ;UNLINK Commande différente de DEL La commande est asynchrone , Donc ça ne bloque pas ;UNLINK La commande n'est pas bloquée pour supprimer , Suppression non bloquante en bref , Est de placer l'opération de suppression dans un autre thread pour le traitement ;
Redis Scan La commande est utilisée pour itérer les clés de base de données dans la base de données ;SCAN La commande est un Itérateur basé sur le curseur,Après chaque appel, Renvoie un nouveau curseur à l'utilisateur, L'utilisateur doit utiliser ce nouveau curseur comme SCAN Paramètres du curseur pour la commande, Pour poursuivre le processus itératif précédent;
Nettoyage périodique des données périmées
L'accumulation de grandes quantités de données périmées peut entraîner de grandes quantités KeyLa production de,Par exemple, dansHASH De grandes quantités de données sont constamment écrites par incréments dans le type de données, ignorant l'actualité des données ; Les données de défaillance peuvent être nettoyées par des tâches programmées ;En train de nettoyerHASHHeure des données,Adoption recommandéeHSCANCoordination des commandesHDEL Commande pour nettoyer les données invalides , Évitez de nettoyer de grandes quantités de données RedisBlocage;
(2) Compression et séparation key
a. Quandvaule- Oui.stringHeure, Difficile à séparer , Utiliser la sérialisation 、 L'algorithme de compression key Contrôle de la taille dans une plage raisonnable , Mais la sérialisation et la désérialisation entraînent plus de temps ;
b. Quandvalue- Oui.string, Il est encore grand après compression key, Le fractionnement est nécessaire ,Un grandkey Divisé en différentes parties , Enregistrer chaque section key,Utilisermultiget Attendre que l'opération réalise la lecture de la transaction .
c. Quandvalue- Oui.list/set/hashLorsque le type de collection est égal, Découpage en fonction de la taille estimée des données , Les différents éléments sont calculés et divisés en différentes tranches ;InRedisDans l'architecture des grappes, Split large Key Peut jouer un rôle important dans l'équilibre de la mémoire entre les tranches de données ;
(3)SurveillanceRedis Niveau de mémoire pour
Peut être réglé raisonnablement par le système de surveillance Redis Rappel du seuil d'alarme de mémoire ,Par exempleRedisUtilisation de la mémoire supérieure à70%、RedisLa mémoire de1 Taux de croissance supérieur à 20%Attendez.; Par ces moyens de surveillance , De nombreux problèmes peuvent être évités à l'avance ,Par exempleLIST La défaillance du programme de consommation du type de données a causé la correspondance Key Le nombre de listes de , Transformer l'alarme en avertissement pour éviter la défaillance ;
RÉFÉRENCES:
Découvrir et traiter RedisGrandeKeyEt la chaleurKey - Base de données Cloud Redis - Alicloud
C'est réglé.RedisGrandkeyQuestions, Ses collègues l'ont loué pour sa peau de vache
边栏推荐
- New version of dedecms collection and release plug-in tutorial tool
- Redis---1. Data structure characteristics and operation
- LeetCode 90. 子集 II
- Hydration failed because the initial UI does not match what was rendered on the server. One of the reasons for the problem
- 代码技巧——Controller参数注解@RequestParam
- CUDA中的存储空间修饰符
- Current situation analysis of Devops and noops
- WLAN相关知识点总结
- 穀歌出海創業加速器報名倒計時 3 天,創業人闖關指南提前收藏!
- Learn about various joins in SQL and their differences
猜你喜欢
Contest3147 - game 38 of 2021 Freshmen's personal training match_ 1: Maximum palindromes
New version of dedecms collection and release plug-in tutorial tool
Google Go to sea entrepreneurship accelerator registration countdown 3 days, entrepreneurs pass through the guide in advance collection!
Eco express micro engine system has supported one click deployment to cloud hosting
锐捷EBGP 配置案例
Hydration failed because the initial UI does not match what was rendered on the server. One of the reasons for the problem
Don't use the new WP collection. Don't use WordPress collection without update
Flutter hybrid development: develop a simple quick start framework | developers say · dtalk
Let every developer use machine learning technology
Find the highest value of the current element Z-index of the page
随机推荐
实习生跑路留了一个大坑,搞出2个线上问题,我被坑惨了
利用NVIDIA GPU将Minecraft场景渲染成真实场景
锐捷EBGP 配置案例
Step by step | help you easily submit Google play data security form
Linked list (linear structure)
No subject alternative DNS name matching updates. jenkins. IO found, the reason for the error and how to solve it
Bgp Routing preference Rules and notice Principles
底层机制Mvcc
深入学习JVM底层(三):垃圾回收器与内存分配策略
Data science [viii]: SVD (I)
MySQL的10大經典錯誤
New version of dedecms collection and release plug-in tutorial tool
WLAN相关知识点总结
Find the highest value of the current element Z-index of the page
来自读者们的 I/O 观后感|有奖征集获奖名单
深入学习JVM底层(四):类文件结构
TensorRT中的循环
IDEA公布全新默认UI,太清爽了(内含申请链接)
Data playback partner rviz+plotjuggler
Arduino Wire 库使用