1"use strict";(self.webpackChunkengula_website=self.webpackChunkengula_website||[]).push([["4851"],{6108:function(e,n,s){s.r(n),s.d(n,{default:()=>h});var r=s(2676),i=s(453);function d(e){let n=Object.assign({h1:"h1",a:"a",p:"p",strong:"strong",h2:"h2",ul:"ul",li:"li",h3:"h3",code:"code",table:"table",thead:"thead",tr:"tr",th:"th",tbody:"tbody",td:"td",blockquote:"blockquote"},(0,i.ah)(),e.components);return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.h1,{id:"engula-ç®ä»",children:["Engula ç®ä»",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#engula-ç®ä»",children:"#"})]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Engula"})," æ¯ä¸æ¬¾é«æ§è½ãå
å髿ç Redis å
¼å®¹å
æ ¸ãå®åºäº Redis Server 代ç åºæå»ºï¼å¨ä¿æåè®®ä¸è¡ä¸ºå
¼å®¹çåæä¸ï¼ç¨ ",(0,r.jsx)(n.strong,{children:"Engula å
å弿"})," æ¿æ¢äº Redis çå
å对象å卿¨¡åï¼ä»èè®©ç°æ Redis é¨ç½²å¯ä»¥æ´ä½ææ¬å°è¿ç§»ä¸éªè¯ã"]}),"\n",(0,r.jsxs)(n.h2,{id:"æ ¸å¿è®¾è®¡ç念",children:["æ ¸å¿è®¾è®¡ç念",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#æ ¸å¿è®¾è®¡ç念",children:"#"})]}),"\n",(0,r.jsx)(n.p,{children:"Engula çæ¶æéµå¾ªä¸æ¡æ ¸å¿ååï¼"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Redis è¡ä¸ºé«ä¸è´"}),"ï¼å®æ¹ runtest ä¸å®¢æ·ç«¯éªè¯æç»å
¬å¼ï¼è¿ç§»ææ¬æä½"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"å
åæçä¼å
"}),"ï¼éè¿å缩ä¸ç´§åçå
æ°æ®ç¼ç éä½å ç¨"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"ä¼å
ä¿éå»¶è¿"}),"ï¼å
¸å读åè´è½½ä¸ï¼åå°è¯·æ± P99 å»¶è¿ä¸ Redis 7.2 åçæ¡ä»¶å®æµç¸å½ï¼äºæ¯«ç§çº§ï¼"]}),"\n"]}),"\n",(0,r.jsxs)(n.h2,{id:"æ¶ææ¦è§",children:["æ¶ææ¦è§",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#æ¶ææ¦è§",children:"#"})]}),"\n",(0,r.jsx)(n.p,{children:"Engula Server å»¶ç» Redis Server çæ´ä½æ¶æï¼ä¸»è¦æ¹å¨æ¯å°å
å对象å卿¿æ¢ä¸º Engula å
å弿ãå
¶ä»æ¨¡ååªéå°ééé
ï¼å³å¯å¨ä¿çæ¢æ Redis åè½çåæ¶ç»´æå
¼å®¹æ§ã"}),"\n",(0,r.jsxs)(n.h3,{id:"å
å表示",children:["å
å表示",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#å
å表示",children:"#"})]}),"\n",(0,r.jsxs)(n.p,{children:["å¨ Redis Server ä¸ï¼æ°æ®è®¿é®å´ç» ",(0,r.jsx)(n.strong,{children:"Redis Object (robj)"})," å±å¼ã"]}),"\n",(0,r.jsxs)(n.p,{children:["å¨ Engula Server ä¸ï¼å
åæ°æ®ä»¥ ",(0,r.jsx)(n.strong,{children:"Engula Object (eobj)"})," 表示ï¼è¯¥ç»ææ´ç´§åï¼å¹¶é对å缩/è§£åæçåäºä¸é¨ä¼åã"]}),"\n",(0,r.jsx)(n.p,{children:"å¨é®å¼æä½è¿ç¨ä¸ï¼Engula ä¼å° eobj æé转æ¢ä¸ºä¸´æ¶ç robjï¼"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"æ°æ§å è½½"}),"ï¼ä»
å¨éè¦æ¶åå»ºä¸´æ¶ ",(0,r.jsx)(n.code,{children:"robj"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"èªå¨éæ¾"}),"ï¼éè¿ç¼è¯å¨çº§ä¿éï¼ç¡®ä¿ä¸´æ¶å¯¹è±¡å¨åç§è·¯å¾ä¸é½è½è¢«æ£ç¡®åæ¶"]}),"\n"]}),"\n",(0,r.jsxs)(n.h2,{id:"å
åæç",children:["å
åæç",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#å
åæç",children:"#"})]}),"\n",(0,r.jsx)(n.p,{children:"Engula éè¿é«åº¦ä¼åçæ°æ®ç»æä¸ç¼ç æ¹å¼æ¾èéä½å
åå¼éãå¨å
¸ååºæ¯ä¸ï¼"}),"\n",(0,r.jsxs)(n.table,{children:["\n",(0,r.jsxs)(n.thead,{children:["\n",(0,r.jsxs)(n.tr,{children:["\n",(0,r.jsx)(n.th,{children:"æ°æ®ç»æ"}),"\n",(0,r.jsx)(n.th,{align:"right",children:"Redis å
æ°æ®å¼éï¼åèï¼"}),"\n",(0,r.jsx)(n.th,{align:"right",children:"Engula å
æ°æ®å¼éï¼åèï¼"}),"\n",(0,r.jsx)(n.th,{children:"ä¼åç¹"}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.tbody,{children:["\n",(0,r.jsxs)(n.tr,{children:["\n",(0,r.jsx)(n.td,{children:"HashTable"}),"\n",(0,r.jsx)(n.td,{align:"right",children:"32ï¼dictEntryï¼"}),"\n",(0,r.jsx)(n.td,{align:"right",children:"14"}),"\n",(0,r.jsx)(n.td,{children:"Swiss table"}),"\n"]}),"\n",(0,r.jsxs)(n.tr,{children:["\n",(0,r.jsx)(n.td,{children:"Key + robj"}),"\n",(0,r.jsx)(n.td,{align:"right",children:"3ï¼key sdsï¼+ 16ï¼robjï¼"}),"\n",(0,r.jsx)(n.td,{align:"right",children:"10"}),"\n",(0,r.jsx)(n.td,{children:"eobj åå¨"}),"\n"]}),"\n",(0,r.jsxs)(n.tr,{children:["\n",(0,r.jsx)(n.td,{children:"Value
1ï¼Stringï¼"}),"\n",(0,r.jsx)(n.td,{align:"right",children:"3ï¼value sdsï¼"}),"\n",(0,r.jsx)(n.td,{align:"right",children:"1"}),"\n",(0,r.jsx)(n.td,{children:"eobj åå¨"}),"\n"]}),"\n",(0,r.jsxs)(n.tr,{children:["\n",(0,r.jsx)(n.td,{children:"TTL"}),"\n",(0,r.jsx)(n.td,{align:"right",children:"8"}),"\n",(0,r.jsx)(n.td,{align:"right",children:"5"}),"\n",(0,r.jsx)(n.td,{children:"åé¿æ´æ°ç¼ç "}),"\n"]}),"\n",(0,r.jsxs)(n.tr,{children:["\n",(0,r.jsx)(n.td,{children:"Jemalloc"}),"\n",(0,r.jsx)(n.td,{align:"right",children:"⥠4ï¼8 åè对é½ï¼"}),"\n",(0,r.jsx)(n.td,{align:"right",children:"2"}),"\n",(0,r.jsx)(n.td,{children:"Memory Block 管ç"}),"\n"]}),"\n",(0,r.jsxs)(n.tr,{children:["\n",(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"å计"})}),"\n",(0,r.jsx)(n.td,{align:"right",children:(0,r.jsx)(n.strong,{children:"66"})}),"\n",(0,r.jsx)(n.td,{align:"right",children:(0,r.jsx)(n.strong,{children:"32"})}),"\n",(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"约 50% å
æ°æ®å¼ééä½"})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"说æ"}),"ï¼ä¸è¡¨å¯¹æ¯çæ¯ per-key å
é¨å
æ°æ®å¼éï¼ä¸å« value æ°æ®æ¬èº«ï¼ãvalue è¶å¤§ï¼å
æ°æ®èç对æ»å
åçè´¡ç®è¶å°ï¼value è¶å°ãkey æ°éè¶å¤ï¼æ´ä½èççè¶æ¥è¿ä¸è¡¨ãå
¸åè´è½½ç宿µæ»å
åèç为 40%â75%ï¼å»ºè®®ç¨ ValueSight 导å
¥èªå·±ç RDB 宿µã"]}),"\n"]}),"\n",(0,r.jsxs)(n.h2,{id:"memory-block-管ç",children:["Memory Block 管ç",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#memory-block-管ç",children:"#"})]}),"\n",(0,r.jsxs)(n.p,{children:["Engula å°é®å¼æ°æ®åå¨å¨ ",(0,r.jsx)(n.strong,{children:"Memory Blocks"})," ä¸ï¼å¹¶åå为ï¼"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Mutable Zone"}),"ï¼å¯ä¿®æ¹çæ°æ®åºå"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Immutable Zone"}),"ï¼ä»
å
许å é¤çæ°æ®åºå"]}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["åå°ä»»å¡ä¼å¨ææ§å°å¯¹ Immutable Zone ä¸ç block ååç¼©ä¸æ¿æ¢ãè¿äºåå°ä»»å¡ä¼è¢«æå为ç»ç²åº¦ã",(0,r.jsx)(n.strong,{children:"å¯ä¸æçåç¨"}),"ï¼å¹¶å¨åç Redis ç主线ç¨ä¸ I/O 线ç¨ä¸æ§è¡ã"]}),"\n",(0,r.jsx)(n.p,{children:"Engula 伿 ¹æ®ç³»ç»è´è½½å¨æè°æ´ååºæ¶é´é¢ç®ï¼ä¼å
ä¿éåå°è¯·æ±çå»¶è¿ç®æ ï¼åå°å·¥ä½å伿 ¹æ®å I/O 线ç¨çå©ç¨çè¿è¡åé
ï¼ä»¥æåæ´ä½ CPU æçã"}),"\n",(0,r.jsxs)(n.h2,{id:"æ§è½ä¸å¯æ©å±æ§",children:["æ§è½ä¸å¯æ©å±æ§",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#æ§è½ä¸å¯æ©å±æ§",children:"#"})]}),"\n",(0,r.jsxs)(n.h3,{id:"æ¨ªåæ©å±",children:["æ¨ªåæ©å±",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#æ¨ªåæ©å±",children:"#"})]}),"\n",(0,r.jsx)(n.p,{children:"Engula éè¿å¢å I/O çº¿ç¨æ¯æè¿çº¿æ§çæ¨ªåæ©å±ãæ´ä½ååå¯è¾¾å°æè¶
è¿ Redisï¼å¹¶ä¿ææ´å¯é¢æµç CPU æ©å±æ§ã"}),"\n",(0,r.jsxs)(n.h3,{id:"io-模åä¼å",children:["I/O 模åä¼å",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#io-模åä¼å",children:"#"})]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Redisï¼Busy Polling 模åï¼"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"ç念"}),"ï¼é»è®¤ç¬å CPU ä¸å
åèµæº"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"æºå¶"}),"ï¼I/O 线ç¨å
busy pollingï¼â 100 ä¸ cycles â 0.1msï¼åè¿å
¥ sleep"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"表ç°"}),"ï¼é«è´è½½ä¸ CPU æ¶èåé线æ§å¢é¿"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Engulaï¼èªéåº Signal/Wait 模åï¼"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"ç念"}),"ï¼é¢åå
±äº«ç¯å¢çèµæºæç"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"æºå¶"}),"ï¼ç¨ååæä½ä¸ ",(0,r.jsx)(n.code,{children:"pthread"})," æ¡ä»¶åéå®ç°ç signal/wait æ¿ä»£ busy polling"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"ä¼å"}),"ï¼éä½ signal é¢çï¼åå°åä½ä¸ä¸æåæ¢"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"ç»æ"}),"ï¼å¨è¾¾å° Redis 级峰å¼ååçåæ¶ï¼CPU æ©å±æ´å¹³æ»ãæ´å¯é¢æµ"]}),"\n"]}),"\n",(0,r.jsxs)(n.h3,{id:"cpuå
åæè¡¡",children:["CPUâå
åæè¡¡",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#cpuå
åæè¡¡",children:"#"})]}),"\n",(0,r.jsx)(n.p,{children:"Engula éè¿å®æ¶å缩/è§£åï¼ç¨å¯æ§ç CPU å¼éæ¢åæ¾èçå
åèçï¼å¨ç»´ææ§è½çåæ¶é使»ä½å
åææ¬ã"}),"\n",(0,r.jsxs)(n.h2,{id:"redis-ä¸-valkey-å
¼å®¹æ§",children:["Redis\xae ä¸ Valkey å
¼å®¹æ§",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#redis-ä¸-valkey-å
¼å®¹æ§",children:"#"})]}),"\n",(0,r.jsxs)(n.p,{children:["Engula ä¸ RedisãValkey ä¿æ ",(0,r.jsx)(n.strong,{children:"wire protocol é«ä¸è´æ§"}),"ãéè¿å¤ç¨è¿äºçæçåç计ç®å±ï¼Engula è½ä¸ºæ åæ°æ®æä½å½ä»¤æä¾ä¸è´çè¡ä¸ºè¡¨ç°ï¼å·²ç¥å·®å¼é¡¹ä¼å¨ proof-live ä¸å
¬å¼åå ä¸å½±åã"]}),"\n",(0,r.jsx)(n.p,{children:"å¨åå¨éæç¹é«åº¦éç¦»çæ¨¡åå设计ä¸ï¼Engula å¯ä»¥å¨ä¸ä¸ªæå
坹齿°ç Redis/Valkey çæ¬åå¸ï¼ç¡®ä¿å
¼å®¹æ§æ´æ°èå¥ã"}),"\n",(0,r.jsxs)(n.h3,{id:"çæ¬æ¯æ",children:["çæ¬æ¯æ",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#çæ¬æ¯æ",children:"#"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Redis"}),"ï¼ä»¥ 7.2.11 为å½åå
¬å¼éªè¯åºçº¿"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Valkey"}),"ï¼å
¨çæ¬æ¯æ"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"æç»æ¼è¿"}),"ï¼æ£å¨å Valkey 8/9 è¿ç§»"]}),"\n"]}),"\n",(0,r.jsxs)(n.h2,{id:"å¢å¼ºç¹æ§",children:["å¢å¼ºç¹æ§",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#å¢å¼ºç¹æ§",children:"#"})]}),"\n",(0,r.jsxs)(n.h3,{id:"æ§è½å¢å¼º",children:["æ§è½å¢å¼º",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#æ§è½å¢å¼º",children:"#"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"ç§æ RDB æ ¼å¼"}),"ï¼ç¼©ç ",(0,r.jsx)(n.code,{children:"SAVE"}),"/",(0,r.jsx)(n.code,{children:"LOAD"})," èæ¶ï¼å¹¶å éå
¨éå¤å¶åæ¥"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"大 Value ä¼å"}),"ï¼å¨å¤çº¿ç¨ï¼â¥4 线ç¨ï¼é
ç½®ä¸ï¼å¤§ value 读æ§è½æå 50% 以ä¸"]}),"\n"]}),"\n",(0,r.jsxs)(n.h3,{id:"åè½å¢å¼º",children:["åè½å¢å¼º",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#åè½å¢å¼º",children:"#"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"ZSet å缩"}),"ï¼å¯¹æåºéååå缩以è¿ä¸æ¥éä½å
åå¼é"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"å¢å¼ºçº¿ç¨æ¨¡å"}),"ï¼æçº¿ç¨/åç¨çè°åº¦ä¸ä¼å
级ä½ç³»ï¼æå CPU å©ç¨çä¸å°¾å»¶è¿è¡¨ç°"]}),"\n"]}),"\n",(0,r.jsxs)(n.h2,{id:"æ»ç»",children:["æ»ç»",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#æ»ç»",children:"#"})]}),"\n",(0,r.jsxs)(n.p,{children:["Engula å° ",(0,r.jsx)(n.strong,{children:"åæ°çå
å管ç"}),"ã",(0,r.jsx)(n.strong,{children:"强å缩çç¥"})," ä¸ ",(0,r.jsx)(n.strong,{children:"åè®®çº§äºæä½æ§"})," ç»åå¨ä¸èµ·ï¼ä¸º Redis å
¼å®¹æ°æ®åºå¸¦æ¥æ¾èæåã"]}),"\n",(0,r.jsxs)(n.p,{children:["å
¶èªéåº I/O 模åä¸å¯æ¨ªåæ©å±çæ¶æè½æä¾æ´ç¨³å®ãæ´çº¿æ§çæ§è½è¡¨ç°ï¼å¹¶å¨ä¸çºç²å
¼å®¹æ§çåæä¸å®ç° ",(0,r.jsx)(n.strong,{children:"约 40%â75% çå
åå ç¨éä½"}),"ï¼å
¸åè´è½½å®æµï¼éæ°æ®ç»æä¸ value 大å°ååï¼ï¼éç¨äºå¸æéä½å
åææ¬ä¸å¯¹ç¨³å®æ§è¦æ±æé«ççäº§åºæ¯ã"]}),"\n",(0,r.jsxs)(n.h2,{id:"license-ä¸çæ¬",children:["License ä¸çæ¬",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#license-ä¸çæ¬",children:"#"})]}),"\n",(0,r.jsx)(n.p,{children:"Engula æä¾ä¸¤ä¸ªçæ¬ï¼"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Engula Developer Edition"})," â æ°¸ä¹
å
è´¹ï¼æå¤ 6 个 Engula èç¹ï¼master/replica æ¯ä¾ä¸éï¼ï¼åå®ä¾å
åä¸éã"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Engula Enterprise"}
1)," â é¢åæ´å¤§è§æ¨¡ä¸ç产ï¼å
å«ä¼ä¸æ¯æãSLA 䏿£å¼ååã"]}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["宿´çæ¬å·®å¼ä¸ EULA 详æ
è§ ",(0,r.jsx)(n.a,{href:"/eula",children:"License ä¸ EULA 页é¢"}),"ãæ´å¤§è§æ¨¡æä¼ä¸æ¯æè¯·èç³»éå®ï¼",(0,r.jsx)(n.a,{href:"mailto:[email protected]?subject=%E7%94%B3%E8%AF%B7%20Engula%20Enterprise",children:"[email protected]"}),"ã"]})]})}function l(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{wrapper:n}=Object.assign({},(0,i.ah)(),e.components);return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}let h=l;l.__RSPRESS_PAGE_META={},l.__RSPRESS_PAGE_META["zh%2Fdocs%2Fabout-engula%2Fintroduction.mdx"]={toc:[{text:"æ ¸å¿è®¾è®¡ç念",id:"æ ¸å¿è®¾è®¡ç念",depth:2},{text:"æ¶ææ¦è§",id:"æ¶ææ¦è§",depth:2},{text:"å
å表示",id:"å
å表示",depth:3},{text:"å
åæç",id:"å
åæç",depth:2},{text:"Memory Block 管ç",id:"memory-block-管ç",depth:2},{text:"æ§è½ä¸å¯æ©å±æ§",id:"æ§è½ä¸å¯æ©å±æ§",depth:2},{text:"æ¨ªåæ©å±",id:"æ¨ªåæ©å±",depth:3},{text:"I/O 模åä¼å",id:"io-模åä¼å",depth:3},{text:"CPUâå
åæè¡¡",id:"cpuå
åæè¡¡",depth:3},{text:"Redis\xae ä¸ Valkey å
¼å®¹æ§",id:"redis-ä¸-valkey-å
¼å®¹æ§",depth:2},{text:"çæ¬æ¯æ",id:"çæ¬æ¯æ",depth:3},{text:"å¢å¼ºç¹æ§",id:"å¢å¼ºç¹æ§",depth:2},{text:"æ§è½å¢å¼º",id:"æ§è½å¢å¼º",depth:3},{text:"åè½å¢å¼º",id:"åè½å¢å¼º",depth:3},{text:"æ»ç»",id:"æ»ç»",depth:2},{text:"License ä¸çæ¬",id:"license-ä¸çæ¬",depth:2}],title:"Engula ç®ä»",headingTitle:"Engula ç®ä»",frontmatter:{}}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.