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://javamana.com/2021/09/20210915054639971u.html

  1. 互聯網Java工程師面試題,遇到的面試官都是架構師級別,
  2. 从入门到精通系列Java高级工程师路线介绍,拼多多三面惨败,
  3. 今年最新整理的《高频Java面试题集合》,2021Java通用流行框架大全,
  4. La dernière collection de questions d'entrevue Java haute fréquence organisée cette année, 2021 Java Universal Popular Framework
  5. De l'introduction à l'introduction de l'itinéraire de l'ingénieur principal Java de la série Mastering, il y a eu de nombreux échecs.
  6. JavaScript operator (1), Web Development Engineer
  7. Java simultané Programming Books recommended, half - Runner Java Program see me easy to Attack!
  8. Trier les questions d'entrevue Javascript, trier les points de connaissance des itinéraires d'apprentissage
  9. Xiaopeng P7, a high-value domestic electric car that can't be missed
  10. Song Mengjun's "sleepless night" triggered an upsurge of dance storm after 00
  11. Encapsulated PHP sends HTTP requests with curl. Get and post are very easy to use
  12. Recommend a lightweight and practical excellent Linux panel - wgcloud
  13. 从思维图到基础再到深入,记一次字节跳动Java研发岗的面试经历,
  14. 从底层开始带你了解并发编程,五步搞定Java开发环境部署,
  15. 从基础到源码统统帮你搞定,一招彻底帮你搞定HashMap源码,
  16. 從基礎到源碼統統幫你搞定,一招徹底幫你搞定HashMap源碼,
  17. De la base au code source pour vous aider à résoudre tout, un tour pour vous aider à résoudre complètement le code source hashtap,
  18. Commencez par le bas pour vous familiariser avec la programmation simultanée, et terminez le déploiement de l'environnement de développement Java en cinq étapes.
  19. 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.
  20. Open source: Suzhou tourism strategy based on pyecharts visual analysis
  21. Good play | every character hates it. How does jade building spring do it?
  22. 從底層開始帶你了解並發編程,五步搞定Java開發環境部署,
  23. 以商品超卖为例讲解Redis分布式锁,一招彻底帮你搞定HashMap源码,
  24. 从青铜到王者的路线,2021Java者未来的出路在哪里?
  25. JavaScript Advanced Programming (3rd Edition) Reading note 6
  26. 從青銅到王者的路線,2021Java者未來的出路在哪裏?
  27. Quelle est la voie à suivre pour les 2021 Java du bronze au roi?
  28. Prenez l'exemple de la surproduction de marchandises pour expliquer redis Distributed Lock, un tour complet pour vous aider à résoudre le code source de hashtap,
  29. 以商品超賣為例講解Redis分布式鎖,一招徹底幫你搞定HashMap源碼,
  30. Win10系统 java环境配置
  31. Non-ASCII character ‘\xe5‘ in file kf1.py on line 4, but no encoding declared; see http://python.or
  32. 手把手教你搭建微信小程序服务器(HTTPS)
  33. JavaScript Review sketch - 1
  34. sqli-labs-less-18 http头user agent+报错注入
  35. Git下载、安装、配置、配合Intellij Idea实现代码版本控制
  36. NHibernate inheritance
  37. Summary of basic knowledge points of JavaScript language (mind map)
  38. GIT télécharge, installe, configure et implémente le contrôle de version de code avec intellij idea
  39. Sqli Labs - less - 18 http header user agent + Error Reporting Injection
  40. Vous apprendrez à construire un serveur d'applet Wechat (https) à la main
  41. Non - ASCII character 'xe5' in file kf1.py on Line 4, but no Encoding declared;Voirhttp://python.or
  42. 作为一名程序员我不忘初心,Java最新实习面试经验总结,
  43. 作为一名Java面试者你应该知道的,2021最新Java常用开源库总结,
  44. 作为一个程序员,你觉得最大的悲哀是什么,2021年大厂Java岗面试必问,
  45. Configuration de l'environnement Java du système win10
  46. 作為一個程序員,你覺得最大的悲哀是什麼,2021年大廠Java崗面試必問,
  47. 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:
  48. Comme vous devriez le savoir en tant qu'intervieweur Java, 2021 dernier résumé des bibliothèques open source couramment utilisées pour Java,
  49. En tant que programmeur, je n'oublie pas le dernier résumé de mon expérience d'entrevue de stage en Java.
  50. 作為一名Java面試者你應該知道的,2021最新Java常用開源庫總結,
  51. New feature of Java 8. Stream (). Map (general programming method: collect. Groupingby)
  52. Computer graduation project java + SSM hospital registration system
  53. 作為一名程序員我不忘初心,Java最新實習面試經驗總結,
  54. 使用Docker部署Spring-Boot项目,论程序员成长的正确姿势,
  55. Conseils pour améliorer l'efficacité du Code Java mille fois
  56. 全网首发,我在华为做Java外包的真实经历!
  57. 全套Java视频百度云,终于找到一个看得懂的JVM内存模型了,
  58. Docker tutorial series (I) introduction to docker tutorial spring cloud mybatis distributed microservice Cloud Architecture
  59. 全網首發,我在華為做Java外包的真實經曆!
  60. Run around with money? Li Weijia fell into the storm of endorsement! In the face of collective hot discussion, personal attitude has become the focus of attention