当前位置: 首页 > 后端技术 > Java

【Redis】经典面试题总结-史上最全试题思维导图总结(2022最新版)

时间:2023-04-01 16:34:25 Java

鍐欏湪鍓嶉潰馃搶Xmind鏂囦欢鑾峰彇锛歡ithub鎸佺画鏇存柊涓紝鍒繕浜唖tar~銆婮ava銆婂涔?闈㈣瘯鎸囧崡銆嬫€濈淮瀵煎浘锛岃绠楁満鑷鎸囧崡锛屽寘鎷琂ava鍩虹銆丣VM銆佹暟鎹簱銆乵ysql銆乺edis銆佽绠楁満缃戠粶銆佺畻娉曘€佹暟鎹粨鏋勩€佹搷浣滅郴缁熺瓑锛屽悗鍙版妧鏈爤/鏋舵瀯甯堜箣璺?鍏ㄦ爤寮€鍙戠ぞ鍖恒€侀樋閲屻€佽吘璁€佺櫨搴︺€佺編鍥€佷粖鏃ュご鏉$瓑鏄ユ嫑/绉嬫嫑/鏍℃嫑/闈㈣瘯鎬濈淮瀵煎浘锛坧ng鏍煎紡鍙笅杞芥斁澶э級Redis浼樼己鐐逛紭缂虹偣浼樼鐨勮鍐欐€ц兘鏀寔鏁版嵁鎸佷箙鍖栨敮鎸佷簨鍔★紝鎵€鏈夋搷浣滈兘鏄師瀛愮殑锛屾敮鎸佸涓搷浣滅粍鍚堢殑鍘熷瓙鎵ц銆傛暟鎹粨鏋勪赴瀵岋紝涓讳粠澶嶅埗锛岃鍐欏垎绂汇€傜己鐐瑰皬鏁版嵁閲忕殑楂樻€ц兘杩愮畻鍜岃绠楋紝娌℃湁鑷姩瀹归敊鍜屾仮澶嶅姛鑳姐€傞渶瑕佺瓑寰呮満鍣ㄩ噸鍚垨鑰呮墜鍔ㄥ垏鎹㈠墠绔疘P鏉ユ仮澶嶄富鏈恒€傚畷鏈猴紝瀹曟満鍓嶆湁涓€浜涙暟鎹病鏈夊強鏃跺悓姝ュ埌浠庢満锛岄檷浣庝簡绯荤粺鐨勫彲鐢ㄦ€с€傞毦浠ユ敮鎸佸湪绾挎墿灞曘€傛病鏈塵ap/guava锛屾湰鍦扮紦瀛樼殑鐢熷懡鍛ㄦ湡闅忕潃jvm鐨勯攢姣佽€岀粨鏉熴€傛瘡涓疄渚嬮兘闇€瑕佷繚瀛樹竴涓紦瀛橈紝缂撳瓨鏄笉涓€鑷寸殑銆傚揩鐨勫師鍥犲畬鍏ㄦ槸鍩轰簬鍐呭瓨鏌ユ壘鍜屾搷浣滅殑鏃堕棿澶嶆潅搴︽槸O(1)銆傛暟鎹粨鏋勭畝鍗曪紝鍗曠嚎绋嬶紝閬垮厤涓嶅繀瑕佺殑涓婁笅鏂囧垏鎹㈠拰绔炰簤鏉′欢锛屼笉瀛樺湪澶氳繘绋嬫垨澶氱嚎绋嬪垏鎹㈠鑷寸殑CPU娑堣€椼€傝€冭檻鍚勭閿侀棶棰橈紝娌℃湁閲婃斁閿佺殑鎿嶄綔锛屾病鏈夊彲鑳芥閿侀€犳垚鐨勬€ц兘娑堣€楀I/O澶氳矾澶嶇敤妯″瀷锛岄潪闃诲IOmemcached(1)memcached鐨勬墍鏈夊€奸兘鏄畝鍗曠殑String锛宺edis浣滀负鍏舵浛浠e搧锛屾敮鎸佹洿涓板瘜鐨勬暟鎹被鍨嬶紙2锛塺edis姣攎emcached蹇緢澶氾紙3锛塺edis鍙互鎸佷箙鍖栧叾鏁版嵁锛屾敮鎸佸垎甯冨紡鍩虹鏁版嵁绫诲瀷STRINGLISTSETHASHZSETjumplist澶氬眰閾捐〃+浜屽垎搴旂敤鍦烘櫙璁℃暟鍣ㄧ紦瀛楽ession缂撳瓨缁熶竴瀛樺偍澶氫釜搴旂敤鏈嶅姟鍣ㄧ殑浼氳瘽淇℃伅鏌ヨ琛―NS璁板綍娑堟伅闃熷垪锛堝彂甯?璁㈤槄鍔熻兘锛夊垪琛ㄦ槸涓€涓弻鍚戦摼琛紝鍙互閫氳繃lpush鍜宺pop鍐欏叆鍜岃鍙栨秷鎭垎甯冨紡閿丼ETNX闅忔満鍊硷紝鍒犻櫎鍜岃В閿佹寔涔呭寲RDB锛堥粯璁わ級蹇収dump.rdbfork瀛愯繘绋嬫瘮杈冪浉鍚屽悗瀹屾垚鍐欐搷浣滐紝璁╀富杩涚▼缁х画澶勭悊鍛戒护锛屾墍浠O鏈€澶у寲姣擜OF鍚姩鏇撮珮鏁堛€侫OF灏哛edis鎵ц鐨勬瘡鏉″啓鍛戒护璁板綍鍦ㄥ崟鐙殑鏃ュ織鏂囦欢涓紝浼氫紭鍏圓OF鎭㈠銆傛瘡鎵ц涓€娆″懡浠ゆ搷浣滐紝閮戒細鍦╝of鏂囦欢涓褰曚竴娆°€侫OF鏂囦欢姣擱DB鏂囦欢澶э紝鎭㈠閫熷害鎱€俁DB鍚姩鏁堢巼浣庛€侫OF鏂囦欢姣擱DB鏇存柊鏇撮绻侊紝浼樺厛浣跨敤AOF鏂囦欢銆傛仮澶嶆暟鎹繃鏈熼敭鐨勫垹闄ょ瓥鐣ョ敤浜庡鐞嗚繃鏈熺殑缂撳瓨鏁版嵁銆傚畾鏃惰繃鏈熷崰鐢ㄥぇ閲廋PU璧勬簮銆傝闂瘑閽ユ椂浣跨敤寤惰繜杩囨湡銆傚懆鏈熸€ц繃鏈熸壂鎻忎竴瀹氭暟閲忔暟鎹簱鐨別xpires瀛楀吀涓殑涓€瀹氭暟閲忕殑key銆傝繃鏈熸椂闂村拰姘镐箙鏈夋晥EXPIRE鍜孭ERSIST鍐呭瓨娣樻卑绛栫暐allkeys-lru鐢ㄤ簬澶勭悊鍐呭瓨涓嶈冻鏃堕渶瑕佺敵璇烽澶栫┖闂寸殑鏁版嵁绾跨▼妯″瀷銆傚濂楁帴瀛楋紝IO澶氳矾澶嶇敤绋嬪簭锛屾枃浠朵簨浠跺垎鍙戝櫒锛堝崟绾跨▼锛夛紝浜嬩欢澶勭悊鍣ㄤ娇鐢↖/O澶氳矾澶嶇敤锛坢ultiplexing)绋嬪簭鍚屾椂鐩戝惉澶氫釜濂楁帴瀛椼€傛牴鎹畇ocket褰撳墠鎵ц鐨勪换鍔★紝涓簊ocket鍏宠仈涓嶅悓鐨勪簨浠跺鐞嗗櫒銆備氦鏄撹涔堝叏閮ㄦ墽琛岋紝瑕佷箞鏍规湰涓嶆墽琛屻€侻ULTI銆丒XEC銆丏ISCARD銆乄ATCH绛夌粍鍛戒护鐨勯泦鍚堬紝涓€涓簨鍔′腑鐨勬墍鏈夊懡浠ら兘浼氳搴忓垪鍖栬淇敼锛堟垨鍒犻櫎锛夊悗锛屽悗缁殑浜嬪姟灏嗕笉浼氳鎵ц锛岀洃鎺т細涓€鐩存寔缁埌EXEC鍛戒护銆侱ISCARD瀹㈡埛绔彲浠ユ竻绌轰氦鏄撻槦鍒楋紝鏀惧純浜ゆ槗鐨勬墽琛屻€備氦鏄撳垎涓変釜闃舵寮€濮嬨€侻ULTI鍛戒护涓嶄細绔嬪嵆鎵ц锛岃€屾槸鏀惧湪涓€涓槦鍒椾腑銆傝鍛戒护灏嗕簨鍔″叆闃熸墽琛孍XEC浠ユ墽琛屼簨鍔″潡涓殑鎵€鏈夊懡浠ゃ€備笉鏀寔鍥炴粴銆備簨鍔″け璐ユ椂涓嶅洖婊氾紝缁х画鎵ц鍓╀笅鐨勫懡浠ら殧绂诲崟杩涚▼绋嬪簭锛屼繚璇佷簨鍔℃墽琛屾椂涓嶄細涓柇涓嶆敮鎸佸師瀛愭€т笉淇濊瘉鍘熷瓙鎬э紝娌℃湁寮傛鍥炴粴闃熷垪浣跨敤list绫诲瀷淇濆瓨鏁版嵁淇℃伅锛宺push鐢熶骇娑堟伅锛宭pop娑堣垂娑堟伅銆傚綋lpop娌℃湁娑堟伅鐨勬椂鍊欙紝鍙互sleep涓€娈垫椂闂达紝鐒跺悗鏌ョ湅鏈夋病鏈夋秷鎭€傚鏋滀綘涓嶆兂鐫¤锛屼綘鍙互浣跨敤blpop銆傚綋娌℃湁娑堟伅鏃讹紝瀹冧細闃诲锛岀洿鍒版秷鎭埌杈俱€俁edis鍙互閫氳繃pub/sub涓婚璁㈤槄妯″紡瀹炵幇涓€涓敓浜ц€呭拰澶氫釜娑堣垂鑰呫€傚綋鐒讹紝涔熸湁涓€瀹氱殑缂虹偣銆傚綋娑堣垂鑰呬笅绾挎椂锛屼骇鐢熺殑娑堟伅灏嗕涪澶便€傞泦缇ゆ柟妗堝摠鍏垫ā寮忛泦缇ょ洃鎺э細璐熻矗鐩戞帶redis涓讳粠娑堟伅閫氱煡锛氬鏋滄煇涓猺edis瀹炰緥鍑虹幇鏁呴殰锛岄€氱煡绠$悊鍛樸€傛晠闅滆浆绉伙細濡傛灉涓昏妭鐐规寕浜嗭紝浼氳嚜鍔ㄨ浆绉诲埌浠庤妭鐐广€傚垽鏂竴涓猰aster鑺傜偣鏄惁瀹曟満锛屽ぇ澶氭暟sentinel閮藉悓鎰忥紝鍒嗗竷寮忛€変妇閰嶇疆涓績锛歠ailover锛屽苟閫氱煡瀹㈡埛绔柊鐨刴aster鍦板潃銆傛牳蹇冪煡璇嗚嚦灏戦渶瑕?涓猻entinel瀹炰緥+redis涓讳粠閮ㄧ讲鏋舵瀯锛屼笉淇濊瘉闆舵暟鎹涪澶憋紝鍙繚璇侀珮鍙敤銆傞泦缇ゆ柟妗堬紙鏈嶅姟鍣ㄧ璺敱鏌ヨ锛夊垎甯冨紡瀵诲潃绠楁硶hash绠楁硶锛堝ぇ缂撳瓨閲嶆瀯锛変竴鑷存€ash绠楁硶锛堢紦瀛樿嚜鍔ㄨ縼绉伙級+铏氭嫙鑺傜偣锛堣嚜鍔ㄨ礋杞藉潎琛¤В鍐虫暟鎹€炬枩闂锛塺edis闆嗙兢hash妲絟ash妲界畻娉?6384Master-浠庢灦鏋勬瘡涓暟鎹垎鐗囬兘浼氬瓨鍌ㄥ湪澶氫釜涓讳粠鑺傜偣涓€傚涓妭鐐逛箣闂寸殑鏁版嵁涓嶄繚鎸佷竴鑷存€с€傚厛鍐欏叆master鑺傜偣锛屽啀鍚屾鍒皊lave鑺傜偣锛堟敮鎸侀厤缃负闃诲鍚屾锛夛紝褰揷lient鑺傜偣涓婃病鏈夊垎閰嶇粨鏉熸搷浣滅殑key鏃讹紝redis浼氳繑鍥炶浆鍚戝懡浠ゆ寚鍚戞纭殑鑺傜偣.鎵╁鏃讹紝闇€瑕佸皢鑰佽妭鐐圭殑閮ㄥ垎鏁版嵁杩佺Щ鍒版柊鑺傜偣銆備紭鐐规敮鎸佸姩鎬佹墿灞曪紝鍏锋湁Sentinel鐩戞帶鍜岃嚜鍔ㄦ晠闅滆浆绉伙紙failover锛夎兘鍔涳紝娑堥櫎浜嗗鎵樹唬鐞嗙殑涓㈠け骞惰繛鎺ュ埌闆嗙兢涓换浣曞彲鐢ㄧ殑鑺傜偣銆傛牴鎹鎴风鍒嗛厤锛屼娇鐢ㄥ搱甯岀畻娉曞Redis鏁版嵁鐨勯敭杩涜鍝堝笇澶勭悊銆傞€氳繃鍝堝笇鍑芥暟锛屽皢鐗瑰畾鐨刱ey鏄犲皠鍒扮壒瀹歊edis鑺傜偣涓婄殑Redis瀹炰緥銆傜浉浜掔嫭绔嬶紝浜掍笉鐩稿叧锛屼笉鏀寔鍔ㄦ€佸鍒犺妭鐐癸紝闇€瑕佹瘡涓鎴风鏇存柊璋冩暣銆傛暟鎹紝骞跺皢璇锋眰杞彂鍒版纭殑鑺傜偣銆傝浆鎹㈡垚鏈綆銆備唬鐞嗗眰鍐嶈浆鍙戜竴娆★紝鎬ц兘灏辨崯澶变簡銆備富浠庢灦鏋勬槸涓€涓诲浠庛€俶aster璐熻矗鍐欏叆锛屽苟灏嗘暟鎹鍒跺埌鍏朵粬slave鑺傜偣锛宻lave鑺傜偣璐熻矗璇诲彇銆傛墍鏈夎鍙栬姹傞兘杞埌浠庡睘鑺傜偣銆傛敮鎸侀珮璇诲苟鍙戙€俽edis澶嶅埗->涓讳粠鏋舵瀯->璇诲啓鍒嗙->姘村钩鎵╁睍鏀寔璇诲彇楂樺苟鍙戞牳蹇冩満鍒跺紓姝ュ鍒跺苟鍙戦€佷竴涓狿SYNCfull鍐嶅悓姝ュ叏閲忔嫹璐濓紝master浼氬惎鍔ㄤ竴涓悗鍙扮嚎绋嬶紝寮€濮嬬敓鎴愪竴涓猂DB蹇収鏂囦欢骞跺彂閫丷DB缁檚lave锛宻lave浼氬厛鍐欏叆鏈湴纾佺洏锛岀劧鍚庡啀浠庢湰鍦扮鐩樺姞杞藉埌鍐呭瓨涓€俶aster灏嗙紦瀛樺湪鍐呭瓨涓殑write鍛戒护鍙戦€佺粰slave銆傚繀椤诲惎鐢ㄤ富鑺傜偣鐨勬寔涔呭寲銆傚綋master宕╂簝骞堕噸鏂板惎鍔ㄦ椂锛屾暟鎹负绌猴紝鐒跺悗鍙兘澶嶅埗涔嬪悗锛屼粠鑺傜偣鐨勬暟鎹篃涓㈠け浜嗐€備粠澶囦唤涓€夋嫨涓€涓猺db鏉ユ仮澶峬aster锛岃繖鏍峰彲浠ヤ繚璇佸湪鍚姩鐨勬椂鍊欙紝鏈夋暟鎹殑slave鑺傜偣鑳藉鑷姩鎺ョmaster鑺傜偣锛屼絾鏄篃鏈夊彲鑳芥槸sentinel杩樻病鏈夋娴嬪埌master鏁呴殰鐨勬椂鍊欙紝涓昏妭鐐逛細鑷姩閲嶅惎锛屼粛鐒跺彲鑳藉鑷翠笂杩版墍鏈変粠鑺傜偣鏁版嵁琚竻闄ゃ€傚垎鍖虹己鐐归€氬父涓嶆敮鎸佹秹鍙婂涓敭鐨勬搷浣滀笉鑳藉皢涓や釜闆嗗悎鐩镐氦骞跺瓨鍌ㄥ湪涓嶅悓鐨凴edis瀹炰緥涓鏋滃悓鏃舵搷浣滃涓敭锛屽垯鏃犳硶浣跨敤Redis浜嬪姟銆傛暟鎹鐞嗕細寰堝鏉傘€俁DB/AOF鏂囦欢蹇呴』鍚屾椂浠庝笉鍚岀殑Redis瀹炰緥鍜屼富鏈烘敹闆嗐€傚姩鎬佹墿瀹规垨缂╁鍙兘浼氶潪甯稿鏉傘€俁edis闆嗙兢鍙互鍦ㄨ繍琛屾椂娣诲姞鎴栧垹闄edis鑺傜偣銆傚畠鍙互鏈€澶х▼搴﹀湴瀵圭敤鎴烽€忔槑鍦伴噸鏂板钩琛℃暟鎹紝浣嗗叾浠栦竴浜涘鎴风鍒嗗尯鎴栦唬鐞嗗垎鍖烘柟娉曚笉鏀寔姝ゅ姛鑳姐€傚垎甯冨紡閿丼ETNXSETifNoteXists褰撲笖浠呭綋閿笉瀛樺湪鏃讹紝灏嗛敭鐨勫€艰缃负鍊笺€傚鏋滅粰瀹氱殑key宸茬粡瀛樺湪锛孲ETNX涓嶉噰鍙栦换浣曞姩浣滄潵瑙e喅Redis骞跺彂绔炰簤Key鍒嗗竷寮忛攣锛坺ookeeper鍜宺edis閮藉彲浠ュ疄鐜板垎甯冨紡閿侊級銆傚綋姣忎釜瀹㈡埛绔攣瀹氫竴涓柟娉曟椂锛寊ookeeper鍜孴his鏂规硶鍦ㄦ寚瀹氳妭鐐瑰搴旂殑鐩綍涓嬬敓鎴愪竴涓敮涓€鐨勭灛鏃舵湁搴忚妭鐐广€傚垽鏂槸鍚﹁幏鍙栭攣鐨勬柟娉曞緢绠€鍗曪紝鍙渶瑕佸垽鏂湁搴忚妭鐐逛腑搴忓彿鏈€灏忕殑鑺傜偣鍗冲彲銆傞噴鏀鹃攣鏃讹紝鍒犻櫎鐬€佽妭鐐瑰嵆鍙€傚悓鏃跺彲浠ラ伩鍏嶅洜鏈嶅姟瀹曟満瀵艰嚧鏃犳硶閲婃斁閿佽€屽鑷寸殑姝婚攣闂銆備笟鍔℃祦绋嬪畬鎴愬悗锛屽垹闄ゅ搴旂殑瀛愯妭鐐癸紝閲婃斁閿併€俽edlock浜掓枼璁块棶锛屽嵆濮嬬粓鍙湁涓€涓猚lient鑳芥嬁鍒伴攣锛屾渶鍚庝竴涓猚lient鍙兘鎷垮埌閿侊紝涓嶄細鍑虹幇姝婚攣銆傚彧瑕佸ぇ閮ㄥ垎Redis鑺傜偣瀛樻椿锛屽氨鍙互姝e父鎻愪緵鏈嶅姟銆傜紦瀛樺紓甯哥紦瀛橀洩宕╃紦瀛樺悓鏃跺ぇ闈㈢Н澶辨晥鍜岃繃鏈熸椂闂撮殢鏈鸿缃紝闃叉澶ч噺鏁版嵁鍚屾椂杩囨湡銆傚姞閿侊紝鎺掗槦锛岀紦瀛樼┛閫忥紝缂撳瓨鍜屾暟鎹簱涓嶅瓨鍦ㄧ殑鏁版嵁鎺ュ彛灞傦紝澧炲姞鏍¢獙锛岀洿鎺ユ嫤鎴猧d<=0浼氬皢閿€煎鍐欎负key-null锛岀紦瀛樻湁鏁堟椂闂村彲璁剧疆缂╃煭鍒版洿鐭殑鏃堕棿鐐癸紝渚嬪30绉掋€傞槻姝loomfilter閲嶅浣跨敤鍚屼竴涓猧d杩涜鏆村姏鐮磋В鍒ゆ柇鏄惁鍦ㄦ暟鎹簱鍝堝笇琛ㄤ腑锛屽涓搱甯屾湁涓€瀹氱殑璇垽鐜囧拰鍒犻櫎鍥伴毦鎵€鏈夌殑鍝堝笇鍑芥暟閮藉憡璇夋垜浠厓绱犲湪瀹冧箣鍓嶇殑闆嗗悎涓彲浠ュ湪set涓‘瀹氭槸鍚︾紦瀛樼儹鐐规暟鎹殑缁嗗垎缂撳瓨鏃堕棿杩囨湡璁剧疆鐑偣鏁版嵁姘镐笉杩囨湡缁欑紦瀛樻坊鍔爉utex棰勭儹灏嗙浉鍏崇紦瀛樻暟鎹洿鎺ュ姞杞藉埌缂撳瓨绯荤粺缂撳瓨闄嶇骇鏍规嵁涓€浜涘叧閿暟鎹嚜鍔ㄩ檷绾э紝涔熷彲浠ラ厤缃紑鍏冲疄鐜版墜鍔ㄩ檷绾edis鍑虹幇鐨勯棶棰樻槸娌℃湁鏌ヨ鏁版嵁搴擄紝鑰屾槸鐩存帴杩斿洖榛樿鍊肩粰鐢ㄦ埛鏁版嵁搴撱€傚弻鍐欐暟鎹竴鑷存€у厛鏇存柊鏁版嵁搴擄紝鍐嶅垹闄ょ紦瀛樸€傝剰鏁版嵁锛孊鏇存柊鏁版嵁搴擄紝B鍐欏叆缂撳瓨锛孉鍐欏叆缂撳瓨->鏁版嵁涓嶄竴鑷村厛鍒犻櫎缂撳瓨锛屽啀鏇存柊鏁版嵁搴撻珮骞跺彂锛欰鍒犻櫎锛孊浠庢暟鎹簱璇诲彇鑴忔暟鎹紝B鍐欏叆锛孉鏇存柊鏁版嵁搴?>鏁版嵁涓嶄竴鑷达紝缂撳瓨娌℃湁鏇存柊銆傛湁澶ч噺鍐锋暟鎹崰鐢ㄨ祫婧愶紝浣跨敤缂撳瓨璁$畻缂撳瓨銆?/p>