1"use strict";(self.webpackChunkengula_website=self.webpackChunkengula_website||[]).push([["5215"],{8529:function(e,t,s){s.r(t),s.d(t,{default:()=>u});var a=s(2676),n=s(453),i=s(1274);function r(e){let t=Object.assign({h1:"h1",a:"a"},(0,n.ah)(),e.components);return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(t.h1,{id:"engula-常è§é®é¢",children:["Engula 常è§é®é¢",(0,a.jsx)(t.a,{className:"header-anchor","aria-hidden":"true",href:"#engula-常è§é®é¢",children:"#"})]}),"\n",(0,a.jsx)(i.A,{})]})}function o(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{wrapper:t}=Object.assign({},(0,n.ah)(),e.components);return t?(0,a.jsx)(t,{...e,children:(0,a.jsx)(r,{...e})}):r(e)}let u=o;o.__RSPRESS_PAGE_META={},o.__RSPRESS_PAGE_META["zh%2Fdocs%2Ffaq.mdx"]={toc:[],title:"Engula 常è§é®é¢",headingTitle:"Engula 常è§é®é¢",frontmatter:{}}},1274:function(e,t,s){s.d(t,{A:()=>u});var a=s(2676),n=s(726),i=s(6606),r=s(2394);let o={zh:{items:[...s(8657).L.faq.items,{question:"Engula ä¸å
¶ä»é®å¼å卿ä»ä¹ä¸åï¼",answer:["Engula æ¯é¢å Redis/Valkey è¿ç§»åºæ¯ç纯å
åæ°æ®åºå
æ ¸ï¼åè®®è¯ä¹ä¸ç°æå®¢æ·ç«¯ã代çå常è§è¿ç»´å·¥å
·ä¿æé«ä¸è´ã","å®çæ ¸å¿å·®å¼å¨åºå±å
å弿ï¼éè¿æ´ç´§åçå
æ°æ®ã对象ç¼ç åéæå缩éä½å key å¼éï¼åæ¶ä¿ç Redis 飿 ¼çæ°æ®æ¨¡ååæä½ä¹ æ¯ã"]},{question:"Engula ççè½èç约 50% çå
ååï¼",answer:["å¨å¤§å¤æ°çäº§åºæ¯ä¸ï¼èçå¹
åº¦å¨ 40%â75% ä¹é´ãå
·ä½åå³äºæ°æ®ç»æç»åãå¹³å key/value 大å°å TTL åå¸ãæ¨å¯ä»¥ç¨ ValueSight 导å
¥èªå·±ç RDB å¿«ç
§ï¼5 åéå
å¾å°æ´åç¡®çå
å对æ¯ã"]},{question:"æä»ä¹éå¶æ trade-offï¼",answer:["Engula éè¿å®æ¶å缩/è§£åæ¥éä½å
åï¼è¿ä¼æ¶èä¸é¨å CPU èµæºãåçº¿ç¨æ¡£ä½ï¼ioThreads=1ï¼åå为 Redis ç 0.83â0.86\xd7ï¼2 线ç¨èµ·åè¶
å¹¶éæ ¸æ°æ©å±ï¼å®æ´ç©éµè§å®æ¶éªè¯é¡µã妿æ¨çåºæ¯æ¯ CPU å¯éåèéå
åå¯éåï¼æ¶çä¼ç¸å¯¹æéã"]},{question:"æ¯å¦æ¯æ Redis Cluster å Sentinel 模å¼ï¼",answer:["齿¯æãEngula å
¼å®¹ Redis Cluster åè®®ï¼å¯ç´æ¥ç¨äºå·²æçé群ææï¼ä¸éè¦è°æ´åççç¥ãSentinel é
ç½®åæ ·å¯ä»¥ç´æ¥å¤ç¨ã"]},{question:"æ¯å¦æ¯æ ACL åæ°æ®å å¯ï¼",answer:["æ¯æ Redis 7.2 ç ACL æéä½ç³»ï¼ä¼ è¾å±æ¯æ TLS å å¯ãRDB æä¹
åæä»¶å å¯å±äºè·¯çº¿å¾è½åï¼å
·ä½è¿å±è¯·èç³»ææ¯å¢éã"]},{question:'"Redis åè®®å
¼å®¹"æ¯ä»ä¹ææï¼',answer:[`Engula \u{5BF9}\u{9F50} Redis \u{7684} wire protocol \u{548C}\u{547D}\u{4EE4}\u{884C}\u{4E3A}\u{3002}\u{5F53}\u{524D}\u{516C}\u{5F00}\u{9A8C}\u{8BC1}\u{57FA}\u{7EBF}\u{4E3A} ${i.$G.redisVersion} \u{5B98}\u{65B9}\u{6D4B}\u{8BD5}\u{96C6}\u{FF08}\u{542B} runtest / moduleapi / sentinel / cluster \u{56DB}\u{7EC4}\u{5957}\u{4EF6}\u{FF09}\u{FF1A}${i.$G.subtestsApprox} \u{4E2A}\u{5B50}\u{7528}\u{4F8B}\u{4E00}\u{81F4}\u{FF08}${i.$G.passRate}\u{FF09}\u{FF0C}\u{5DEE}\u{5F02}\u{9879}\u{539F}\u{56E0}\u{548C}\u{5F71}\u{54CD}\u{5728}\u{5B9E}\u{65F6}\u{9A8C}\u{8BC1}\u{9875}\u{9010}\u{9879}\u{516C}\u{5F00}\u{3002}`]},{question:"éç¨ä»ä¹æææ¹å¼ï¼",answer:["Engula æä¾ Developer Edition å EnterpriseãDeveloper Edition æ°¸ä¹
å
è´¹ï¼æå¤ 6 个 Engula èç¹ï¼master/replica æ¯ä¾ä¸éï¼ï¼åå®ä¾å
åä¸éãEnterprise é¢åæ´å¤§è§æ¨¡ä¸ç产ï¼å
å«ä¼ä¸æ¯æãSLA 䏿£å¼ååã"]},{question:"Engula çé¿æå
¼å®¹æ§æ¹åæ¯ä»ä¹ï¼",answer:["Engula çæ¨¡åå设计使åå¨éæç¹é«åº¦é离ï¼å¯ä»¥æ´å¿«å¯¹é½æ°ç Redis/Valkey çæ¬ãå½åå
¬å¼éªè¯åºçº¿ä¸º Redis 7.2.11ï¼å¹¶æ£å¨å Valkey 8/9 è¿ç§»ã"]},{question:"ç£çå¿«ç
§æ¯ååçåï¼",answer:["æ¯ãEngula çåå°ä¿åè¿ç¨æ»æ¯å¨æå¡å¨ä¸å¤äºå½ä»¤æ§è¡æé´è¿è¡ forkï¼å æ¤å¨å
åä¸è¢«è§ä¸ºååçå½ä»¤ï¼ä»ç£çå¿«ç
§è§è§ä¹åæ ·æ¯ååçã"]},{question:"Engula å¦ä½å©ç¨å¤æ ¸ CPUï¼",answer:["Engula å¤ç¨ Redis/Valkey ç I/O çº¿ç¨æ¨¡åãå¯ç¨ io-threads åï¼å¯å°å®¢æ·ç«¯è¯»åå·¥ä½å¸è½½å°ç¬ç«çº¿ç¨ï¼ä½¿ä¸»çº¿ç¨èç¦å½ä»¤æ§è¡ã","å¨ä¸»çº¿ç¨ä¸å I/O 线ç¨å
é¨ï¼Engula å¢å è½»éãå¯ä¸æçåç¨ãåå°ä»»å¡ä¼æå为å°åç¨ï¼å¹¶æä¼å
级è°åº¦ï¼ä»¥éä½å¯¹åå°å°¾å»¶è¿çå½±åã"]},{question:"Key ä¸å
ç´ æ°éä¸éæ¯å¤å°ï¼",answer:["Engula 坿¯ææå¤ 2^32 个 keyï¼å¹¶å·²å¨åå®ä¾è³å° 2.5 亿 key çè§æ¨¡ä¸å®ææµè¯ãæ¯ä¸ª HashãListãSet ä¸ Sorted Set å坿¯ææå¤ 2^32 个å
ç´ ï¼å®é
1å¯ç¨ä¸éé常ç±å¯ç¨å
åå³å®ã"]},{question:"为ä»ä¹å¯æ¬ç key æ°éä¸ä¸»å®ä¾ä¸ä¸è´ï¼",answer:["妿æ¨ä½¿ç¨äºå¸¦ TTL ç keyï¼è¿æ¯æ£å¸¸ç°è±¡ãç¬¬ä¸æ¬¡ä¸å¯æ¬åæ¥æ¶ï¼ä¸»å®ä¾ä¼çæ RDB æä»¶ï¼RDB ä¸ä¼å
å«ä¸»å®ä¾ä¸å·²é»è¾è¿æä½ä»æåäºå
åä¸ç keyã","坿¬å 载主å®ä¾çæç RDB æ¶ï¼è¿é¨åé»è¾è¿æ key ä¸ä¼è¢«å è½½ãå æ¤ï¼å½åå¨å¤§é TTL key æ¶ï¼å¯æ¬ä¾§å¸¸ä¼çå°æ´å°ç key æ°éãé»è¾ä¸ä¸»å¯æ°æ®éæ¯ä¸è´çï¼è¿ç§å·®å¼ä¸»è¦æ¥èªç»è®¡å£å¾ä¸åæ¶æ¶æºã"]}],footerBefore:"æ¬ FAQ ä¼æç»æ´æ°ã妿æªè¦ççé®é¢ï¼è¯·èç³»",footerAfter:"ã"},en:{items:[...r.L.faq.items,{question:"How is Engula different from other key-value stores?",answer:["Engula is a pure in-memory database kernel built for Redis/Valkey migration scenarios, keeping protocol semantics highly consistent with existing clients, proxies and common ops tooling.","Its core difference is the underlying memory engine: more compact metadata, object encoding and transparent compression lower the per-key overhead, while preserving the Redis-style data model and operating conventions."]},{question:"Can Engula really save around 50% of memory?",answer:["In most production scenarios the savings range from 40% to 75%. It depends on the mix of data structures, average key/value size and TTL distribution. You can import your own RDB snapshot with ValueSight and get a more accurate memory comparison within 5 minutes."]},{question:"Are there any limitations or trade-offs?",answer:["Engula lowers memory through real-time compression/decompression, which consumes some CPU. At the single-thread tier (ioThreads=1) throughput is 0.83â0.86\xd7 of Redis; from 2 I/O threads up Engula pulls ahead and scales with cores â full matrix on the live proof page. If your workload is CPU-bound rather than memory-bound, the benefit is relatively limited."]},{question:"Are Redis Cluster and Sentinel modes supported?",answer:["Both are supported. Engula is compatible with the Redis Cluster protocol and works directly with your existing cluster topology, with no need to adjust your sharding strategy. Sentinel configurations can be reused directly as well."]},{question:"Are ACL and data encryption supported?",answer:["The Redis 7.2 ACL permission system is supported, and the transport layer supports TLS encryption. Encryption of the RDB persistence file is a roadmap capability â contact the technical team for the latest status."]},{question:'What does "Redis protocol compatible" mean?',answer:[`Engula aligns with Redis\u{2019}s wire protocol and command behavior. The current public verification baseline is the official ${i.$G.redisVersion} test suite (runtest, moduleapi, sentinel and cluster): ${i.$G.subtestsApprox} subtests match (${i.$G.passRate}), with the reasons and impact of every difference disclosed item by item on the live proof page.`]},{question:"What licensing model do you use?",answer:["Engula offers a Developer Edition and Enterprise. The Developer Edition is free forever, with up to 6 Engula nodes (any master/replica ratio) and unlimited memory per instance. Enterprise targets larger scale and production, and includes enterprise support, an SLA and a formal contract."]},{question:"What is Engulaâs long-term compatibility direction?",answer:["Engulaâs modular design keeps the storage integration points highly isolated, allowing it to align with new Redis/Valkey versions faster. The current public verification baseline is Redis 7.2.11, and migration toward Valkey 8/9 is underway."]},{question:"Are disk snapshots atomic?",answer:["Yes. Engulaâs background save process always forks while the server is not in the middle of executing a command, so commands that are atomic in memory are also atomic from the disk-snapshot perspective."]},{question:"How does Engula use multi-core CPUs?",answer:["Engula reuses the Redis/Valkey I/O-thread model. With io-threads enabled, client read/write work is offloaded to separate threads so the main thread can focus on command execution.","Within the main thread and each I/O thread, Engula adds lightweight, interruptible coroutines. Backgroun
1d tasks are split into small coroutines and scheduled by priority to reduce their impact on foreground tail latency."]},{question:"What are the limits on the number of keys and elements?",answer:["Engula supports up to 2^32 keys and has been tested at a scale of at least 250 million keys per instance. Each Hash, List, Set and Sorted Set can hold up to 2^32 elements; the practical limit is usually determined by available memory."]},{question:"Why does a replicaâs key count differ from the primaryâs?",answer:["If you use keys with TTLs, this is expected. On the first sync with a replica, the primary generates an RDB file; the RDB does not include keys that have logically expired on the primary but are still held in memory.","When the replica loads the primaryâs RDB, those logically expired keys are not loaded. So when there are many TTL keys, the replica often shows a smaller key count. The datasets are logically consistent; the difference comes mainly from counting semantics and reclamation timing."]}],footerBefore:"This FAQ is updated regularly. If your question isnât covered, contact",footerAfter:"."}};function u(){let e=o[(0,n.bh)()]??o.zh;return(0,a.jsxs)("div",{className:"space-y-8",children:[e.items.map(e=>(0,a.jsxs)("section",{children:[(0,a.jsx)("h2",{children:e.question}),e.answer.map(e=>(0,a.jsx)("p",{children:e},e))]},e.question)),(0,a.jsxs)("p",{children:[e.footerBefore," ",(0,a.jsx)("a",{href:"mailto:[email protected]",children:"[email protected]"}),e.footerAfter]})]})}}}]);
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.