Avec cet ensemble de questions d'entrevue Java, l'ensemble de questions de base d'entrevue de bat,

Programmeur Little prune 2021-09-15 05:50:27
avec cet ensemble questions entrevue


Texte

Dans les projets de travail réels, Le cache devient très simultané、Éléments clés de l'architecture haute performance ,AlorsRedisPourquoi peut - on l'utiliser comme cache?Les deux principales caractéristiques qui peuvent être utilisées comme cache:

  • En mémoire dans un système hiérarchique/CPUBonne performance d'accès,
  • Saturation des données du cache,Il existe de bons mécanismes d'élimination des données

Parce queRedis La nature a ces deux caractéristiques,RedisBasé sur la mémoire,Et il a un mécanisme parfait d'élimination des données,Idéal comme composant de cache.

Parmi eux,Opérations basées sur la mémoire,La capacité peut être32-96GB,Et la durée moyenne de fonctionnement est de100ns,Efficacité opérationnelle élevée.Et il y a beaucoup de mécanismes d'élimination des données,InRedis 4.0 Après.8Les graines poussentRedisIl y a beaucoup de scènes disponibles comme cache.

C'est...RedisPourquoi le cache a - t - il besoin d'un mécanisme d'élimination des données?Où est - il?8Et le mécanisme d'élimination des données?

Mécanisme d'élimination des données

RedisMise en cache basée sur la mémoire,Sa capacité de cache est limitée,Quand le cache est plein,À ce moment - là,RedisQue dois - je faire??

RedisSi le cache est plein,RedisIl faut mettre en cache le mécanisme d'obsolescence des données,Certaines données sont effacées par certaines règles d'élimination,Rendre le Service de cache réutilisable.AlorsRedisQuelles politiques d'obsolescence sont utilisées pour effacer les données?

InRedis 4.0 Après,Redis Stratégie d'élimination du cache6+2Espèce,Comprend trois grandes catégories:

  • Ne pas éliminer les données

    • noeviction ,Pas d'élimination des données,Quand le cache sera plein,RedisErreur retournée directement sans service.
  • Dans l'alignement des valeurs clés qui définit le temps d'expiration,

    • volatile-random ,Supprimer au hasard dans la paire de valeurs clés qui fixe le temps d'expiration
    • volatile-ttl ,Paire de valeurs clés pour définir le temps d'expiration,Supprimer en fonction de l'ordre d'expiration,Le plus tôt expire, le plus tôt est supprimé.
    • volatile-lru , Basé surLRU(Least Recently Used) Le filtre algorithmique définit une paire de valeurs clés avec un délai d'expiration, Le principe le moins utilisé récemment pour filtrer les données
    • volatile-lfu ,Utiliser LFU( Least Frequently Used ) L'algorithme sélectionne les paires de valeurs clés avec un délai d'expiration défini, Utilisez la paire de clés la moins fréquente,Pour filtrer les données.
  • Dans toutes les paires de clés,

    • allkeys-random, Sélectionnez au hasard et supprimez les données de toutes les paires de valeurs clés
    • allkeys-lru, Utiliser LRU L'algorithme filtre toutes les données
    • allkeys-lfu, Utiliser LFU L'algorithme filtre toutes les données

Avec ça.JavaJeu de questions d'entrevue,BAT Ensemble de questions de base pour l'entrevue en usine ,_Java

Note: LRU( Utilisation minimale récente,Least Recently Used)Algorithmes, LRUMaintenir une liste bidirectionnelle ,La tête et la queue de la liste indiquent respectivement MRU Fin et LRU Fin,Représente les données les plus récentes et les moins récentes, respectivement.

LRU Lorsque l'algorithme est mis en oeuvre,Toutes les données mises en cache doivent être gérées à l'aide d'une liste liée,Cela entraînera des frais généraux d'espace supplémentaires.Et,Quand les données sont accessibles,Vous devez déplacer ces données sur la liste liée à MRU Fin,Si une grande quantité de données est accessible,Il y aura beaucoup de mouvements de liste liés,Ça va prendre du temps,Et ça diminue Redis Performance du cache.

Parmi eux,LRUEtLFU Basé surRedisStructure de l'objet pourredisObjectDelruEtrefcountPropriété implémentée:

typedef struct redisObject {
unsigned type:4;
unsigned encoding:4;
// Date à laquelle l'objet a été consulté pour la dernière fois
unsigned lru:LRU_BITS; /* LRU time (relative to global lru_clock) or
* LFU data (least significant 8 bits frequency
// Nombre de références * and most significant 16 bits access time). */
int refcount;
void *ptr;
} robj;

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.

RedisDeLRUSera utiliséredisObjectDelruDate de la dernière visite enregistrée,Paramètres aléatoiresmaxmemory-samples Nombre configuré comme Collection candidate,Sélectionner parmi lru Éliminer les données ayant la plus faible valeur d'attribut.

Dans le projet réel,Comment choisir un mécanisme d'élimination des données??

  • Préférences allkeys-lruAlgorithmes,Laisser les données les plus récentes et les plus fréquemment consultées dans le cache,Améliorer les performances d'accès des applications.
  • Utilisation de données supérieures volatile-lruAlgorithmes ,Les données supérieures ne fixent pas le temps d'expiration du cache,Autres paramètres de données expiration,Basé surLRU Règles de filtrage .

Je comprends.RedisAprès le mécanisme d'obsolescence du cache,Viens voir.RedisCombien de modes ont - ils comme cache??

RedisMode cache

RedisLe mode cache est basé sur la réception des demandes d'écriture,Peut être divisé en cache en lecture seule et cache en lecture - écriture:

Cache en lecture seule:Ne traiter que les opérations de lecture,Toutes les opérations de mise à jour sont dans la base de données,Afin que les données ne soient pas perdues.

  • Cache AsideMode

Avec ça.JavaJeu de questions d'entrevue,BAT Ensemble de questions de base pour l'entrevue en usine ,_Arrière - plan_02

Lire et écrire le cache,Les opérations de lecture et d'écriture sont effectuées dans le cache,Défaillance du temps d'arrêt,Perte de données.La mise en cache des données de mise à jour vers la base de données est divisée en deux types: synchrone et asynchrone:

  • Synchroniser:Faible performance d'accès,Il met davantage l'accent sur la fiabilité des données.

    • Read-ThrougMode
    • Write-ThroughMode
  • Asynchrone:Risque de perte de données,Il met l'accent sur l'accès à faible latence

    • Write-BehindMode

Avec ça.JavaJeu de questions d'entrevue,BAT Ensemble de questions de base pour l'entrevue en usine ,_Programmeur_03

Cache AsideMode

Les données de requête sont d'abord lues à partir du cache,Si le cache n'existe pas,Lire les données dans la base de données,Mise à jour vers le cache après avoir obtenu les donnéesCacheMoyenne,Mais mettre à jour les opérations de données,Va d'abord mettre à jour les données de la classe de base de données,Les données du type de cache sont ensuite invalidées.

EtCache AsideLe modèle comporte un risque de concurrence:L'opération de lecture a manqué le cache,Puis Interrogez la base de données pour obtenir des données,Les données ont été questionnées et n'ont pas été mises en cache,En même temps, une opération d'écriture de mise à jour invalide le cache,Ensuite, lisez l'opération et chargez la requête dans le cache de données.,Données sales qui provoquent le cache.

Read/Write-ThrougMode

Les données de requête et de mise à jour accèdent directement au service de cache,Le Service de mise en cache met à jour les données dans la base de données de façon synchrone.Faible probabilité de données sales,Mais dépend fortement du cache,La stabilité du Service de mise en cache est fortement requise,Mais la synchronisation des mises à jour peut entraîner de mauvaises performances.

Write BehindMode

Les données de requête et de mise à jour accèdent directement au service de cache,Mais le Service de mise en cache met à jour les données dans la base de données de façon asynchrone(Par des tâches asynchrones)?Vite!,Ça va être très efficace.,Mais la cohérence des données est faible,Il peut également y avoir une perte de données,La logique de mise en œuvre est également compliquée.

Sélectionner le mode de mise en cache en fonction des besoins réels du scénario d'affaires dans le développement réel du projet.Après avoir compris ce qui précède,,Pourquoi notre application a - t - elle besoin deredisEt le cache??

Utilisé dans l'applicationRedisLa mise en cache améliore les performances du système et la concurrence,Principalement incarné dans

  • Haute performance:Requête basée sur la mémoire,KVStructure,Opérations logiques simples
  • Forte concurrence: Mysql Ne peut être pris en charge que par seconde2000Demandes de gauche et de droite,RedisFacile par seconde1WCi - dessus.Jean80%Cache de requête ci - dessus,20%La requête suivante va dans la base de données,Améliore considérablement le débit du système

Bien queRedisLa mise en cache améliore considérablement les performances du système,Mais le cache est utilisé,Il y a des problèmes.,Par exemple,,Le cache est incompatible avec la base de données dans les deux sens、Cache avalanche, etc.,Comment résoudre ces problèmes??

Utilisation du cache FAQ

Cache utilisé,Il y a des problèmes.,Principalement incarné dans:

  • Le cache n'est pas compatible avec la double écriture de la base de données
  • Cache l'avalanche: Redis Le cache ne peut pas traiter un grand nombre de demandes d'application,Le passage au niveau de la base de données entraîne une augmentation de la pression au niveau de la base de données;
  • Pénétration du cache:Les données d'accès n'existent pas dansRedisCache et base de données,Provoque une augmentation de la pression au niveau de la base de données en raison d'un grand nombre d'accès pénétrant le cache directement dans la base de données;
  • Rupture du cache:Le cache ne peut pas traiter les données des hotspots à haute fréquence,L'accès direct à haute fréquence à la base de données entraîne une augmentation de la pression au niveau de la base de données.;

Cache incompatible avec les données de la base de données

Cache en lecture seule(Cache AsideMode)

PourCache en lecture seule(Cache AsideMode), Les opérations de lecture se produisent dans le cache,Les données incohérentes ne se produisent que lorsqueSuppression et modificationAllez.(Aucune nouvelle action,Parce que l'ajout ne sera traité que dans la base de données),Lorsqu'une opération de suppression se produit,Le cache marque les données comme invalides et met à jour la base de données .Ainsi, lors de la mise à jour de la base de données et de la suppression des valeurs mises en cache,Peu importe l'ordre dans lequel ces deux opérations sont effectuées, qui est le premier et qui est le dernier,Si une opération échoue, il y aura une incohérence des données..

Enfin

Après des mois et des jours, Ce qui suit est une compréhension approfondie de l'inductionJavaDocumentation de la machine virtuelle,J'espère que cela vous aidera à réussir l'entrevue.
Comme l'ensemble du document est assez complet,Plus de contenu,L'espace n'est pas autorisé,Voici une capture d'écran .

 CodeChinaProjet Open Source:【Grandes usines de première ligneJavaAnalyse des questions d'entrevue+Résumé de base notes d'étude+Dernière vidéo d'explication】

Avec ça.JavaJeu de questions d'entrevue,BAT Ensemble de questions de base pour l'entrevue en usine ,_Java_04
Avec ça.JavaJeu de questions d'entrevue,BAT Ensemble de questions de base pour l'entrevue en usine ,_Programmeur_05
Avec ça.JavaJeu de questions d'entrevue,BAT Ensemble de questions de base pour l'entrevue en usine ,_Programmeur_06
Avec ça.JavaJeu de questions d'entrevue,BAT Ensemble de questions de base pour l'entrevue en usine ,_Java_07
Avec ça.JavaJeu de questions d'entrevue,BAT Ensemble de questions de base pour l'entrevue en usine ,_Java_08
Avec ça.JavaJeu de questions d'entrevue,BAT Ensemble de questions de base pour l'entrevue en usine ,_Programmeur_09
Avec ça.JavaJeu de questions d'entrevue,BAT Ensemble de questions de base pour l'entrevue en usine ,_Java_10

En raison des limites d'espace,La documentation détaillée est trop complète,Trop de détails,Donc juste une capture d'écran de quelques points de connaissance pour une introduction approximative,Chaque petit noeud a un contenu plus détaillé!

版权声明
本文为[Programmeur Little prune]所创,转载请带上原文链接,感谢
https://qdmana.com/2021/09/20210915055025381L.html

  1. Mid Autumn Festival special! Use the simplest animation animation to make the most local and trendy holiday blessing greeting card. This romantic male and female tears of Xiao Chen.
  2. Wang Ou went back to the hotel with the man at night. It was suspected that his relationship was open. The netizen replied mercilessly: is the man single
  3. 借助HTML ping属性实现数据上报
  4. APNG在线制作、兼容、播放和暂停
  5. Apng production, compatibilité, lecture et pause en ligne
  6. Mise en œuvre de l'escalade des données avec l'attribut de Ping HTML
  7. Comment envoyer 100 000 requêtes http le plus rapidement possible
  8. JQuery Basics
  9. Front and back end data interaction (V) -- what is Axios?
  10. Serverless is a model architecture invented driven by economic benefits- Grady
  11. Les questions d'entrevue pour les ingénieurs Java d'Internet, les intervieweurs rencontrés sont tous de niveau architecte,
  12. Cinq ans d'entrevue d'expérience en développement Java, découvrez les questions que vous devez poser lors de l'entrevue d'embauche du printemps Java de cette année.
  13. La dernière collection de questions d'entrevue Java haute fréquence organisée cette année, 2021 Java Universal Popular Framework
  14. Intel selected Weilai es8 to promote driverless taxis in Europe
  15. JavaScript operator (1), Web Development Engineer
  16. Trier les questions d'entrevue Javascript, trier les points de connaissance des itinéraires d'apprentissage
  17. Song Mengjun's "sleepless night" triggered an upsurge of dance storm after 00
  18. Module management of "free and open source" front-end spa project crudapi background management system based on Vue and Quasar (14)
  19. Encapsulated PHP sends HTTP requests with curl. Get and post are very easy to use
  20. Front and back end data interaction (V) -- what is Axios?
  21. Flutter: résoudre le futur blocage en utilisant Isolate
  22. Résumé des opérations courantes pour les données de structure de l'arbre frontal
  23. Ant Design Transfer Twin Tree Shuttle box "make Wheels"
  24. De la carte de pensée à la base et à l'approfondissement, prenez note de l'expérience d'entrevue d'un octet sautant le poste de recherche et développement Java.
  25. Apprenez les composants d'implémentation de vue et Publiez - les à NPM
  26. [Questions d'entrevue à haute fréquence] À vous de choisir
  27. Une faible connaissance de beginpath () provoque une superposition de style lors de la peinture d'un dessin en toile
  28. React Hooks, laisse - moi t'emmener étudier.
  29. Comment la copie profonde résout - elle les références circulaires?
  30. JavaScript Advanced Programming (3rd Edition) Reading note 6
  31. Analyse de l'URL
  32. Discussion préliminaire sur xss
  33. Solution: développement de la page Web Wechat, obtenir la fosse Piétinée par le flux d'entrée de la caméra via navigator.mediadevice.getusermedia ()
  34. Des milliers de questions d'entrevue sélectionnées n'ont pas encore ét é effacées.
  35. Les questions d'entrevue de niveau intermédiaire et avancé d'Android au fil des ans sont entièrement incluses, et l'algorithme est distribué microservice
  36. J'ai résumé toutes les questions d'entrevue.
  37. Compréhension de la réactivité des données de vue
  38. Note de service CSS (vi): Flex, page mobile et mise en page réactive
  39. Non-ASCII character ‘\xe5‘ in file kf1.py on line 4, but no encoding declared; see http://python.or
  40. 手把手教你搭建微信小程序服务器(HTTPS)
  41. JavaScript Review sketch - 1
  42. Analyse du bootstrap webpack
  43. sqli-labs-less-18 http头user agent+报错注入
  44. Génération de code nest pour l'outil CLI de nestjs
  45. JS | This
  46. Augmentation des variables
  47. The sinking gs8 raises its flag again. GAC motor's sales are falling endlessly. Is it the car or the people?
  48. Ren Hao's lunch at work today is president Hao wearing a sleeveless coat! Clean and handsome!
  49. Summary of basic knowledge points of JavaScript language (mind map)
  50. The new front-end lady asked: there was a 404 problem refreshing the page in Vue routing history mode
  51. Sqli Labs - less - 18 http header user agent + Error Reporting Injection
  52. Vous apprendrez à construire un serveur d'applet Wechat (https) à la main
  53. Non - ASCII character 'xe5' in file kf1.py on Line 4, but no Encoding declared;Voirhttp://python.or
  54. The new front-end lady asked: there was a 404 problem refreshing the page in Vue routing history mode
  55. En tant que programmeur, quelle est la plus grande tristesse que vous ressentez? L'entrevue d'emploi Java de 2021 dans une grande usine vous demandera:
  56. En tant que programmeur, je n'oublie pas le dernier résumé de mon expérience d'entrevue de stage en Java.
  57. Experts suggested that performers work with certificates, which triggered a collective heated debate. It is meaningless to be accused of repeating the mistakes
  58. The new front-end lady asked: there was a 404 problem refreshing the page in Vue routing history mode
  59. The appearance value of 200000 "Odyssey" is less than 100000, and has become the "sales champion" of household MPV
  60. Les programmeurs Java qui sont entrés dans l'entreprise pendant trois mois ont dû faire face à une correction d'échelle, et les octets ont sauté dans le traitement des questions d'entrevue de JD 360 Netease.