Posted Coding鐨勫摂鍝斿彣鍙?/a>

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了相关的知识,希望对你有一定的参考价值。

馃檱杩欑瘒鏂囩珷鏉ユ暣鐞嗘€荤粨涓€涓媟edis鐨勭嚎绋嬫ā鍨嬨€?/span>


  • 鏂囦欢浜嬩欢澶勭悊鍣?/span>銆?/span>


        redis鍩轰簬reactor妯″紡寮€鍙戜簡缃戠粶浜嬩欢澶勭悊鍣紝杩欎釜澶勭悊鍣ㄥ彨鍋氾細鏂囦欢浜嬩欢澶勭悊鍣?/span>锛團ile Event Handler锛夈€傝繖涓枃浠朵簨浠跺鐞嗗櫒鏄崟绾跨▼鐨勶紝鎵€浠ユ垜浠篃绉皉edis鏄崟绾跨▼鐨勩€?/span>

       閲囩敤闃熷垪妯″紡灏嗗苟鍙戣闂彉涓轰覆琛岃闂紝redis骞舵病鏈夐攣鐨勬蹇点€?/span>

       閲囩敤澶氳矾澶嶇敤io鏈哄埗鍚屾椂鐩戝惉澶氫釜socket锛屾牴鎹畇ocket涓婄殑浜嬩欢鏉ラ€夋嫨瀵瑰簲鐨勪簨浠跺鐞嗗櫒鏉ュ鐞嗚繖涓簨浠躲€?/span>


  • 鏂囦欢浜嬩欢澶勭悊鍣ㄧ殑缁撴瀯銆?/span>鍖呭惈4涓儴鍒嗭細澶氫釜socket銆両O澶氳矾澶嶇敤绋嬪簭銆佹枃浠朵簨浠跺垎娲惧櫒銆佷簨浠跺鐞嗗櫒锛堝懡浠よ姹傚鐞嗗櫒銆佸懡浠ゅ洖澶嶅鐞嗗櫒銆佽繛鎺ュ簲绛斿鐞嗗櫒绛夌瓑锛夈€?/span>


鍏堟潵鐢诲浘灞曠ず涓€涓嬶紝瀵箁edis鐨勭嚎绋嬫ā鍨嬫湁涓ぇ鑷寸殑浜嗚В銆?/span>

Redis鐨勭嚎绋嬫ā鍨?></p> 
<p class=        濡傛灉琚洃鍚瑂ocket鍑嗗濂戒簡鎵цaccept銆乺ead銆亀rite銆乧lose绛夋搷浣滅殑鏃跺€欙紝鍜屾搷浣滃搴旂殑鏂囦欢浜嬩欢灏变細浜х敓锛岃繖涓椂鍊欐枃浠朵簨浠跺鐞嗗櫒灏变細璋冪敤涔嬪墠鍏宠仈濂界殑浜嬩欢澶勭悊鍣ㄦ潵澶勭悊杩欎釜浜嬩欢銆?/span>

        鏂囦欢浜嬩欢澶勭悊鍣ㄦ槸鍗曠嚎绋嬬殑锛屼絾鏄€氳繃IO澶氳矾澶嶇敤鏈哄埗鐩戝惉浜嗗涓猻ocket锛屽彲浠ュ疄鐜伴珮鎬ц兘鐨勭綉缁滄ā鍨嬶紝淇濊瘉浜唕edis鍐呴儴绾跨▼妯″瀷鐨勭畝鍗曟€с€?br>

       鏂囦欢浜嬩欢骞跺彂鐨勫嚭鐜帮紝浣咺O澶氳矾澶嶇敤鐩戝惉澶氫釜socket锛屼細灏唖ocket閮芥帹鍒颁竴涓槦鍒楅噷锛岀劧鍚庨€氳繃杩欎釜闃熷垪鏈夊簭銆佸悓姝ャ€佹瘡娆″彇鍑轰竴涓粰鏂囦欢浜嬩欢鍒嗘淳鍣紝鏃堕棿鍒嗘淳鍣ㄦ妸socket浜ょ粰瀵瑰簲鐨勪簨浠跺鐞嗗櫒銆?br>

        涓€涓猻ocket鐨勪簨浠跺鐞嗗畬鍚庯紝IO澶氳矾澶嶇敤鎵嶄細灏嗛槦鍒椾腑鐨勪笅涓€涓猻ocket缁欎簨浠跺垎娲惧櫒銆傛枃浠朵簨浠跺垎娲惧櫒浼氭牴鎹瘡涓猻ocket褰撳墠浜х敓鐨勪簨浠讹紝鏉ラ€夋嫨瀵瑰簲鐨勪簨浠跺鐞嗗櫒鏉ュ鐞嗐€?/span>


  • 鏂囦欢浜嬩欢


        褰搒ocket鍙樺緱鍙鏃讹紙濡傚鎴风瀵箁edis鎵цwrite鎿嶄綔鎴栬€卌lose鎿嶄綔锛夛紝鎴栬€呮湁鏂扮殑鍙互搴旂瓟鐨剆ocket鍑虹幇鏃?濡傚鎴风瀵箁edis鎵цconnect鎿嶄綔)锛宻ocket灏变細浜х敓涓€涓狝E_READABLE浜嬩欢銆?/span>

        褰搒ocket鍙樺緱鍙啓鐨勬椂鍊欙紙濡傚鎴风鎵цread鎿嶄綔锛夛紝socket灏变細浜х敓涓€涓狝E_WRITABLE浜嬩欢銆?/span>

        IO澶氭暟澶嶇敤绋嬪簭鍙互鍚屾椂鐩戝惉AE_READABLE鍜孉E_WRITABLE涓ょ浜嬩欢锛屽鏋滀竴涓猻ocket浜х敓浜?span class="mq-40">AE_READABLE鍜孉E_WRITABLE涓ょ浜嬩欢锛岄偅涔堟枃浠朵簨浠跺垎娲惧櫒浼氫紭鍏堝鐞?span class="mq-41">AE_READABLE锛岀劧鍚庢墠澶勭悊AE_WRITABLE浜嬩欢銆?/span>


  • 鏂囦欢浜嬩欢澶勭悊鍣?/span>


         redis涓烘枃浠朵簨浠剁紪鍐欎簡澶氫釜澶勭悊鍣紝鐢ㄤ簬涓嶅悓鐨勭綉缁滆姹傦紝甯哥敤鐨勫鐞嗗櫒濡備笅锛?/span>

  1. 濡傛灉鏄鎴风瑕佽繛鎺edis锛岄偅涔堜細涓簊ocket鍏宠仈杩炴帴搴旂瓟澶勭悊鍣ㄣ€?/span>

  2. 濡傛灉鏄鎴风瑕佸啓鏁版嵁鍒皉edis锛岄偅涔堜細涓簊ocket鍏宠仈鍛戒护璇锋眰澶勭悊鍣ㄣ€?/span>

  3. 濡傛灉鏄鎴风瑕佷粠redis璇绘暟鎹紝閭d箞浼氫负socket鍏宠仈鍛戒护鍥炲澶勭悊鍣ㄣ€?/span>


  • 杩炴帴搴旂瓟澶勭悊鍣?/span>


        networking.c涓璦cceptTcpHandler鍑芥暟鏄疪edis鐨勮繛鎺ュ簲绛斿鐞嗗櫒锛岃繖涓鐞嗗櫒鐢ㄤ簬瀵硅繛鎺ユ湇鍔″櫒鐩戝惉濂楁帴瀛楃殑瀹㈡埛绔繘琛屽簲绛旓紝鍏蜂綋瀹炵幇涓簊ys/socket.h/accept鍑芥暟鐨勫寘瑁呫€?/span>

        褰揜edis鏈嶅姟鍣ㄨ繘琛屽垵濮嬪寲鐨勬椂鍊欙紝绋嬪簭浼氬皢杩欎釜杩炴帴搴旂瓟澶勭悊鍣ㄥ拰鏈嶅姟鍣ㄧ洃鍚鎺ュ瓧鐨凙E_READABLE浜嬩欢鍏宠仈璧锋潵锛屽綋鏈夊鎴风鐢╯ys/socket.h/connect鍑芥暟杩炴帴鏈嶅姟鍣ㄧ洃鍚鎺ュ瓧鐨勬椂鍊欙紝 濂楁帴瀛楀氨浼氫骇鐢烝E_READABLE 浜嬩欢锛?寮曞彂杩炴帴搴旂瓟澶勭悊鍣ㄦ墽琛岋紝 骞舵墽琛岀浉搴旂殑濂楁帴瀛楀簲绛旀搷浣滐紝濡傚浘鎵€绀恒€?/span>

Redis鐨勭嚎绋嬫ā鍨?></p> 
<ul class=

  • 鍛戒护璇锋眰澶勭悊鍣?/span>


  •         networking.c涓璻eadQueryFromClient鍑芥暟鏄疪edis鐨勫懡浠よ姹傚鐞嗗櫒锛岃繖涓鐞嗗櫒璐熻矗浠庡鎺ュ瓧涓鍏ュ鎴风鍙戦€佺殑鍛戒护璇锋眰鍐呭锛?鍏蜂綋瀹炵幇涓簎nistd.h/read鍑芥暟鐨勫寘瑁呫€?/span>

            褰撲竴涓鎴风閫氳繃杩炴帴搴旂瓟澶勭悊鍣ㄦ垚鍔熻繛鎺ュ埌鏈嶅姟鍣ㄤ箣鍚庯紝 鏈嶅姟鍣ㄤ細灏嗗鎴风濂楁帴瀛楃殑AE_READABLE浜嬩欢鍜屽懡浠よ姹傚鐞嗗櫒鍏宠仈璧锋潵锛屽綋瀹㈡埛绔悜鏈嶅姟鍣ㄥ彂閫佸懡浠よ姹傜殑鏃跺€欙紝濂楁帴瀛楀氨浼氫骇鐢?AE_READABLE浜嬩欢锛屽紩鍙戝懡浠よ姹傚鐞嗗櫒鎵ц锛屽苟鎵ц鐩稿簲鐨勫鎺ュ瓧璇诲叆鎿嶄綔锛屽鍥炬墍绀恒€?/span>

    Redis鐨勭嚎绋嬫ā鍨?></p> 
<p><br></p> 
<ul class=

  • 鍛戒护鍥炲澶勭悊鍣?/strong>


  •         networking.c涓璼endReplyToClient鍑芥暟鏄疪edis鐨勫懡浠ゅ洖澶嶅鐞嗗櫒锛岃繖涓鐞嗗櫒璐熻矗灏嗘湇鍔″櫒鎵ц鍛戒护鍚庡緱鍒扮殑鍛戒护鍥炲閫氳繃濂楁帴瀛楄繑鍥炵粰瀹㈡埛绔紝鍏蜂綋瀹炵幇涓簎nistd.h/write鍑芥暟鐨勫寘瑁呫€?/span>

            褰撴湇鍔″櫒鏈夊懡浠ゅ洖澶嶉渶瑕佷紶閫佺粰瀹㈡埛绔殑鏃跺€欙紝鏈嶅姟鍣ㄤ細灏嗗鎴风濂楁帴瀛楃殑AE_WRITABLE浜嬩欢鍜屽懡浠ゅ洖澶嶅鐞嗗櫒鍏宠仈璧锋潵锛屽綋瀹㈡埛绔噯澶囧ソ鎺ユ敹鏈嶅姟鍣ㄤ紶鍥炵殑鍛戒护鍥炲鏃讹紝灏变細浜х敓AE_WRITABLE浜嬩欢锛屽紩鍙戝懡浠ゅ洖澶嶅鐞嗗櫒鎵ц锛屽苟鎵ц鐩稿簲鐨勫鎺ュ瓧鍐欏叆鎿嶄綔锛?濡傚浘鎵€绀恒€?/span>

    Redis鐨勭嚎绋嬫ā鍨?></p> 
<p class=        褰撳懡浠ゅ洖澶嶅彂閫佸畬姣曚箣鍚庯紝 鏈嶅姟鍣ㄥ氨浼氳В闄ゅ懡浠ゅ洖澶嶅鐞嗗櫒涓庡鎴风濂楁帴瀛楃殑 AE_WRITABLE 浜嬩欢涔嬮棿鐨勫叧鑱斻€?/span>


    • 瀹㈡埛绔笌redis閫氫俊鐨勫畬鏁存祦绋嬶細 


          鍦╮edis鍚姩鍒濆鍖栫殑鏃跺€欙紝redis浼氬皢杩炴帴搴旂瓟澶勭悊鍣ㄨ窡AE_READABLE浜嬩欢鍏宠仈璧锋潵锛屾帴鐫€濡傛灉涓€涓鎴风璺焤edis鍙戣捣杩炴帴锛屾鏃朵細浜х敓涓€涓狝E_READABLE浜嬩欢锛岀劧鍚庣敱杩炴帴搴旂瓟澶勭悊鍣ㄦ潵澶勭悊璺熷鎴风寤虹珛杩炴帴锛屽垱寤哄鎴风瀵瑰簲鐨剆ocket锛屽悓鏃跺皢杩欎釜socket鐨凙E_READABLE浜嬩欢璺熷懡浠よ姹傚鐞嗗櫒鍏宠仈璧锋潵銆?/span>

          褰撳鎴风鍚憆edis鍙戣捣璇锋眰鐨勬椂鍊欙紙涓嶇鏄璇锋眰杩樻槸鍐欒姹傦紝閮戒竴鏍凤級锛岄鍏堝氨浼氬湪socket浜х敓涓€涓狝E_READABLE浜嬩欢锛岀劧鍚庣敱瀵瑰簲鐨勫懡浠よ姹傚鐞嗗櫒鏉ュ鐞嗐€傝繖涓懡浠よ姹傚鐞嗗櫒灏变細浠巗ocket涓鍙栬姹傜浉鍏虫暟鎹紝鐒跺悗杩涜鎵ц鍜屽鐞嗐€?br>

          鎺ョ潃redis杩欒竟鍑嗗濂戒簡缁欏鎴风鐨勫搷搴旀暟鎹箣鍚庯紝灏变細灏唖ocket鐨凙E_WRITABLE浜嬩欢璺熷懡浠ゅ洖澶嶅鐞嗗櫒鍏宠仈璧锋潵锛屽綋瀹㈡埛绔繖杈瑰噯澶囧ソ璇诲彇鍝嶅簲鏁版嵁鏃讹紝灏变細鍦╯ocket涓婁骇鐢熶竴涓狝E_WRITABLE浜嬩欢锛屼細鐢卞搴旂殑鍛戒护鍥炲澶勭悊鍣ㄦ潵澶勭悊锛屽氨鏄皢鍑嗗濂界殑鍝嶅簲鏁版嵁鍐欏叆socket锛屼緵瀹㈡埛绔潵璇诲彇銆?/span>

          鍛戒护鍥炲澶勭悊鍣ㄥ啓瀹屼箣鍚庯紝灏变細鍒犻櫎杩欎釜socket鐨凙E_WRITABLE浜嬩欢鍜屽懡浠ゅ洖澶嶅鐞嗗櫒鐨勫叧鑱斿叧绯汇€?/span>

    Redis鐨勭嚎绋嬫ā鍨?></p> 
<p><br></p> 
<ul class=

  • 闈㈣瘯棰橈細redis鍗曠嚎绋嬫ā鍨嬩负浠€涔堜篃閭d箞蹇紵


    1. redis鏄函鍐呭瓨鎿嶄綔銆?/span>

    2. redis閲囩敤浜嗗璺疘O澶嶇敤绋嬪簭鏉ョ洃鍚涓猻ocket锛岄噰鐢ㄩ槦鍒楁ā寮忓皢骞惰璁块棶鍙樹负涓茶璁块棶銆俁edis娌℃湁閿佺殑姒傚康锛屽浜庡涓鎴风杩炴帴骞朵笉瀛樺湪绔炰簤銆備絾鏄疛edis瀹㈡埛绔redis杩涜骞跺彂璁块棶浼氬彂鐢熻繛鎺ヨ秴鏃躲€佹暟鎹浆鎹㈤敊璇€侀樆濉炪€佸鎴风鍏抽棴绛夐棶棰橈紝杩欎簺閮芥槸瀹㈡埛绔繛鎺ヨ€屽紩鍙戠殑闂锛屽綋鐒惰繖涓€闂涔熸湁2绉嶅姙娉曪細

      1. 瀹㈡埛绔搴︼紝涓轰繚璇佹瘡涓鎴风闂存甯告湁搴忕殑涓巖edis杩涜閫氫俊锛屽杩炴帴杩涜姹犲寲锛屽悓鏃跺瀹㈡埛绔鍐檙edis绛夋搷浣滈噰鐢ㄥ唴閮ㄩ攣synchronize銆?/span>

      2. 鏈嶅姟鍣ㄨ搴︼紝鍒╃敤setNx瀹炵幇閿併€?/span>

      娉ㄦ剰锛?/span>绗竴绉嶆柟娉曪紝闇€瑕佸簲鐢ㄧ▼搴忚嚜宸卞鐞嗚祫婧愮殑鍚屾锛屽彲浠ヤ娇鐢ㄧ殑鏂规硶鏂规硶姣旇緝閫氫織锛屽synchronize鎴杔ock锛涚浜岀闇€瑕佺敤鍒皉edis鐨剆etnx鍛戒护銆?/span>

    3. 鍗曠嚎绋嬫ā鍨嬩篃閬垮厤浜嗛绻佺殑涓婁笅鏂囥€?/span>


    Redis鐨勭嚎绋嬫ā鍨? class=涓嶇Н璺锛屾棤浠ヨ嚦鍗冮噷銆?/strong>

    鏂囩珷鏈夊府鍔╃殑璇濓紝鐐逛釜杞彂銆佸湪鐪嬪憲Redis鐨勭嚎绋嬫ā鍨? class=銆?/strong>

    璋㈣阿鏀寔鍝?(*^__^*)

    END


    Redis鐨勭嚎绋嬫ā鍨?><span class=馃憞

    以上是关于的主要内容,如果未能解决你的问题,请参考以下文章

    谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js

    片段和活动之间的核心区别是啥?哪些代码可以写成片段?

    VSCode自定义代码片段——.vue文件的模板

    VSCode自定义代码片段6——CSS选择器

    VSCode自定义代码片段——声明函数

    VSCode自定义代码片段8——声明函数