PageSourceSearch

https://montplex.com/static/js/async/5215.f3b76bfc.js

js montplex.com collected 2026-10-03 21:17:07 UTC 10,375 bytes, 1 lines download raw bytes

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.