PageSourceSearch

https://montplex.com/static/js/async/2037.3fa26c0c.js

js montplex.com collected 2026-10-03 21:16:15 UTC 12,142 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunkengula_website=self.webpackChunkengula_website||[]).push([["2037"],{7284:function(e,n,s){s.r(n),s.d(n,{default:()=>h});var r=s(2676),i=s(453);function l(e){let n=Object.assign({h1:"h1",a:"a",p:"p",strong:"strong",h2:"h2",ul:"ul",li:"li",em:"em",h3:"h3",blockquote:"blockquote",table:"table",thead:"thead",tr:"tr",th:"th",tbody:"tbody",td:"td",code:"code",ol:"ol"},(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:["Engula 被设计为 ",(0,r.jsx)(n.strong,{children:"Valkey/Redis 7.2 的“即插即用”替代"}),",目标是在不破坏 Redis 生态互操作性的前提下,让应用与客户端库可以无缝接入。\n本指南面向开发者说明兼容性的含义、已验证的客户端范围,以及如何确保迁移后的行为一致。"]}),"\n",(0,r.jsxs)(n.h2,{id:"协议与-api-兼容性",children:["协议与 API 兼容性",(0,r.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#协议与-api-兼容性",children:"#"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"协议支持"}),":Engula 对齐 ",(0,r.jsx)(n.strong,{children:"RESP2"})," 与 ",(0,r.jsx)(n.strong,{children:"RESP3"}),",覆盖 Valkey/Redis 7.2 主线命令面;公开验证见 ",(0,r.jsx)(n.a,{href:"/proof-live",children:"/proof-live"}),"。"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"零代码修改"}),":已经使用 Redis/Valkey 7.2 的应用,通常无需修改代码或配置即可连接 Engula。"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Engula 扩展"}),":部分 Engula 增强特性可能无法在原生 Redis/Valkey 上运行;如需可移植性,请避免使用 Redis/Valkey 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 会紧密对齐 Valkey/Redis 7.2 的语义与行为,包括:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"核心命令"}),":CRUD、key 管理与各类数据结构操作"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"集群模式"}),":slot 管理、拓扑更新与重定向语义"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Pub/Sub 与 Streams"}),":一致的消息分发与消费者组行为"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"事务与脚本"}),":相同的原子性、隔离性与执行语义"]}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["任何可观察到的差异都会被记录,并在可行范围内进行兼容性修复,以保证 ",(0,r.jsx)(n.strong,{children:"可预测的 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.jsxs)(n.p,{children:["由于 Engula 对齐 ",(0,r.jsx)(n.strong,{children:"Valkey/Redis 7.2 的协议与 API"}),",因此凡是支持 Redis OSS 7.2 或 Valkey 7.2 及以上的客户端,通常都可以直接与 Engula 互操作。"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Valkey 客户端目录"}),":",(0,r.jsx)(n.a,{href:"https://valkey.io/clients/",target:"_blank",rel:"noopener noreferrer",children:(0,r.jsx)(n.a,{href:"https://valkey.io/clients/",target:"_blank",rel:"noopener noreferrer",children:"https://valkey.io/clients/"})})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Redis 客户端目录"}),":",(0,r.jsx)(n.a,{href:"https://redis.io/clients",target:"_blank",rel:"noopener noreferrer",children:(0,r.jsx)(n.a,{href:"https://redis.io/clients",target:"_blank",rel:"noopener noreferrer",children:"https://redis.io/clients"})})]}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["这些目录包含各语言的主流客户端与其特性支持情况(例如 ",(0,r.jsx)(n.em,{children:"read-from-replica"}),"、",(0,r.jsx)(n.em,{children:"smart backoff"}),"、",(0,r.jsx)(n.em,{children:"client-side caching"}
1)," 等)。\n只要某个客户端能正确连接 Valkey 或 Redis 7.2,通常就能以相同方式连接 Engula。"]}),"\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 支持 Valkey/Redis 7.2 定义的高级客户端行为。只要使用标准协议命令,下列能力通常可互操作:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Read from Replica"}),":从从节点读取以分担负载"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Cluster-Aware SCAN"}),":跨集群节点的无缝扫描"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Client-Side Caching"}),":基于服务端协助失效的缓存一致性"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"持久连接池"}),":复用连接提升性能"]}),"\n"]}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"提示:"})," 部分特性需要在客户端侧开启配置或运行时开关。\n请参考具体客户端的文档进行设置;Engula 提供相应的服务端能力支持。"]}),"\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 在 CI 流水线中持续对主流 Redis/Valkey 客户端进行兼容性验证。尽管几乎所有 Redis/Valkey 7.2 兼容客户端都应当可以正常工作,但以下客户端已被明确验证:"}),"\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,{children:"常见已验证客户端"}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.tbody,{children:["\n",(0,r.jsxs)(n.tr,{children:["\n",(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Go"})}),"\n",(0,r.jsxs)(n.td,{children:[(0,r.jsx)(n.code,{children:"go-redis"}),", ",(0,r.jsx)(n.code,{children:"valkey-go"})]}),"\n"]}),"\n",(0,r.jsxs)(n.tr,{children:["\n",(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Java"})}),"\n",(0,r.jsxs)(n.td,{children:[(0,r.jsx)(n.code,{children:"jedis"}),", ",(0,r.jsx)(n.code,{children:"valkey-java"}),", ",(0,r.jsx)(n.code,{children:"redisson"})]}),"\n"]}),"\n",(0,r.jsxs)(n.tr,{children:["\n",(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"JavaScript / TypeScript"})}),"\n",(0,r.jsxs)(n.td,{children:[(0,r.jsx)(n.code,{children:"node-redis"}),", ",(0,r.jsx)(n.code,{children:"iovalkey"})]}),"\n"]}),"\n",(0,r.jsxs)(n.tr,{children:["\n",(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Python"})}),"\n",(0,r.jsxs)(n.td,{children:[(0,r.jsx)(n.code,{children:"redis-py"}),", ",(0,r.jsx)(n.code,{children:"valkey-py"})]}),"\n"]}),"\n",(0,r.jsxs)(n.tr,{children:["\n",(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"PHP"})}),"\n",(0,r.jsxs)(n.td,{children:[(0,r.jsx)(n.code,{children:"phpredis"}),", ",(0,r.jsx)(n.code,{children:"predis"})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"如果您使用的客户端未在列表中,但声明支持 Valkey/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:"从 Valkey/Redis 7.2 迁移到 Engula 一般非常直接:"}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"保持相同连接配置"}),"(认证、TLS、超时、连接池等)。"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"及时升级客户端版本"}),",以获得 Redis/Valkey 7.2 语义相关的最新修复。"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"按客户端文档启用特性"}),",如 ",(0,r.jsx)(n.em,{children:"client-side caching"}),"、",(0,r.jsx)(n.em,{children:"read-from-replica"}),"、或 ",(0,r.jsx)(n.em,{children:"Pub/Sub 自动重连"}),"。\nEngula 会匹配这些特性在服务端侧的预期行为。"]}),"\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 会对主流 Redis 客户端 SDK 做自动化兼容性验证,覆盖:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"连接建立与命令执行"}),"\n",(0,r.jsx)(n.li,{children:"数据结构与事务"}),"\n",(0,r.jsx)(n.li,{children:"Pub/Sub 与 Streams"}),"\n",(0,r.jsx)(n.li,{children:"Pipeline 与 Lua 脚本"}),"\n",(0,r.jsx)(n.li,{children:"集群模式处理"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"更多信息:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.a,{href:"/zh/docs/tools/clientcompat",children:"Engula ClientCompat"})}),":用 Docker 运行社区客户端官方测试集,查看测试方法、覆盖范围与报告结构。"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"Engula 团队会持续完善测试套件,及时发现并修复差异。欢迎社区贡献与 PR 来扩展覆盖范围。"}),"\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:"如果您遇到客户端行为异常或协议处理差异:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"提交包含版本信息、配置与最小复现的 issue。"}),"\n",(0,r.jsx)(n.li,{children:"查看客户端的 issue tracker 或 release notes,确认是否存在 Redis/Valkey 7.2 相关已知问题与修复。"}),"\n",(0,r.jsxs)(n.li,{children:["通过 ",(0,r.jsx)(n.a,{href:"mailto:[email protected]",children:"[email protected]"})," 联系 ",(0,r.jsx)(n.strong,{children:"Engula 团队"}),",我们会与客户端维护者协作确保一致性与互操作。"]}),"\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.p,{children:["一句话:",(0,r.jsx)(n.strong,{children:"能跑 Valkey 或 Redis 7.2,就能跑 Engula。"}),"\n从官方 Valkey/Redis 客户端目录选择您偏好的客户端,即可无缝使用 Engula 的高性能与高内存效率架构。"]})]})}function d(){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)(l,{...e})}):l(e)}let h=d;d.__RSPRESS_PAGE_META={},d.__RSPRESS_PAGE_META["zh%2Fdocs%2Fgetting-started%2Fclient.md"]={toc:[{text:"协议与 API 兼容性",id:"协议与-api-兼容性",depth:2},{text:"生态一致性",id:"生态一致性",depth:2},{text:"客户端库",id:"客户端库",depth:2},{text:"高级客户端特性",id:"高级客户端特性",depth:3},{text:"官方已验证客户端",id:"官方已验证客户端",depth:2},{text:"迁移建议",id:"迁移建议",depth:2},{text:"兼容性测试覆盖",id:"兼容性测试覆盖",depth:2},{text:"获取帮助",id:"获取帮助",depth:2},{text:"总结",id:"总结",depth:3}],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.