客户端兼容性测试

Engula 与 Redis®、Valkey 协议保持 完整兼容,并遵循 RESP(Redis Serialization Protocol) 标准。 本文总结 Engula 针对多种编程语言中主流 Redis 客户端库所做的兼容性测试方法与结果。

概览

客户端兼容性测试的目标是确保现有 Redis 客户端库在连接 Engula 时 无需修改代码 即可正常工作。 每项测试会运行对应客户端的官方测试套件,并将测试环境中的 Redis 服务替换为 Engula;仅在必要时进行最小化调整。

测试要点:

  • 直接使用官方客户端仓库与测试套件
  • 在测试环境中用 Engula 替换 Redis
  • 必要时进行少量代码或配置适配
  • 验证协议与命令语义层面的兼容性

测试方法

通用流程

每项兼容性测试遵循如下标准流程:

  1. 环境准备:安装必要依赖(Docker CE、语言运行时、构建工具等)。
  2. 拉取代码:克隆官方客户端仓库并切到某个稳定版本。
  3. 替换服务端:用下述方式之一将 Redis 服务替换为 Engula:
    • 二进制替换:将 engula-server 复制为 /usr/local/bin/redis-server(常用于 Jedis、Lettuce、Redisson 等 Java 客户端)。
    • Docker 镜像:运行预置 Engula 的 Docker 容器(常用于 go-redis、node-redis、NRedisStack、redis-py)。
    • Docker Compose:使用 docker-compose 部署测试环境(常用于 redis-py、NRedisStack)。
  4. 必要适配:根据需要做少量调整:
    • 更新连接串或配置路径
    • 适配测试脚本
    • 跳过不支持或不相关的用例
    • 必要时调整依赖版本
  5. 执行测试:使用客户端内置测试框架运行原生测试套件。
  6. 分析结果:整理通过/失败情况,记录例外并给出最终兼容性结论。

测试模式

不同客户端会依据自身设计与工具链采用不同测试方式:

  • 二进制替换:Java 客户端较常见(Jedis、Lettuce、Redisson),将 redis-server 替换为 engula-server
  • 容器化测试:Go、Node.js、Python、.NET 等通常用 Docker 容器确保环境一致。
  • 仅配置调整:部分客户端只需修改环境变量或配置文件即可。

测试范围

测试覆盖 Engula 在以下 Redis 特性上的兼容性:

  • 连接管理:连接池、自动重连、超时处理
  • 命令执行:验证 Engula 所支持的标准 Redis 命令语义
  • 数据结构:String、Hash、List、Set、ZSet、Stream、Bitmap、HyperLogLog 与地理位置类型
  • 事务MULTI/EXECWATCH/UNWATCH
  • Pub/Sub:发布订阅消息模式
  • Pipeline:批量命令执行
  • 高级特性:
    • Redisson’s distributed objects
    • Lettuce’s reactive API
    • Async capabilities across node-redis and redis-py

测试框架

不同语言客户端使用各自的测试运行器:

语言 测试框架
Go ginkgo
Java JUnit 5
Node.js mocha
Python pytest
.NET dotnet test

已验证客户端

Engula 已在以下客户端库上完成测试并通过:

客户端库 语言 状态
go-redis Go ✅ Compatible
Jedis Java ✅ Compatible
Lettuce Java ✅ Compatible
NRedisStack .NET ✅ Compatible
node-redis Node.js ✅ Compatible
redis-py Python ✅ Compatible
Redisson Java ✅ Compatible

测试结果汇总

兼容性结论

所有已测试客户端均达到 ✅ 完全兼容

  • 协议层支持:RESP2 与 RESP3 完整对齐
  • 命令语义一致:覆盖 Redis 命令语义
  • 仅需少量适配:如 详细测试指南 中所述的环境差异调整

适配改动范围

改动级别 客户端 说明
最小 go-redis, node-redis, NRedisStack, redis-py 少量环境/配置调整
中等 Jedis, Lettuce 可执行文件替换与少量测试补丁
较多 Redisson 二进制替换、依赖调优与选择性用例修改

协议支持

  • 支持版本: RESP2 与 RESP3
  • 协议兼容性: 与 Redis®/Valkey 协议规范完全对齐

详细测试文档

完整的分步流程与各客户端测试报告请参考:

📘 客户端兼容性测试详细指南

该指南包含:

  • 各客户端的分步搭建说明
  • 环境与 Docker 配置
  • 代码与配置改动点
  • 命令行执行示例
  • 各库的结果分析

测试环境

组件 说明
Protocols RESP2 and RESP3
Connection Method Docker networks or localhost:6379
Framework Client-specific (see table above)

更完整的版本组合与测试配置请参考 详细测试文档

贡献

欢迎社区参与。如果您发现任何兼容性问题,或有新的客户端测试结果,请联系: 📧 support@engula.cn

说明: 兼容性测试是持续过程,结果可能随 Engula 与客户端版本变化而变化。 最新结果请以 完整测试概览 为准。