Client Compatibility Testing
Engula provides full compatibility with both the Redis® and Valkey protocols and adheres to the RESP (Redis Serialization Protocol) standard.
This document summarizes the methodology and results of Engula’s client compatibility testing across widely used Redis client libraries in multiple programming languages.
Overview
Client compatibility testing ensures that existing Redis libraries operate seamlessly with Engula without requiring code changes.
Each test runs the official test suite of a popular Redis client against an Engula server instead of Redis, with minimal adjustments made only when necessary.
Testing highlights:
- Official client repositories and test suites used directly
- Engula server substituted for Redis in the test environment
- Minor code or configuration adaptations applied where required
- Validation of protocol and command-level compatibility
Test Methodology
General Approach
Each compatibility test follows a standardized workflow:
- Environment Setup – Install necessary dependencies (Docker CE, language runtime, build tools).
- Repository Checkout – Clone the official client library and check out a specific stable version.
- Server Replacement – Replace the Redis server with Engula using one of the following approaches:
- Binary Replacement: Copy
engula-server to /usr/local/bin/redis-server (used by Java-based clients such as Jedis, Lettuce, Redisson).
- Docker Image: Run Docker containers pre-configured with Engula server (used by go-redis, node-redis, NRedisStack, redis-py).
- Docker Compose: Deploy test environments using
docker-compose (used by redis-py, NRedisStack).
- Code Adjustments – Apply small modifications as required:
- Update connection strings or configuration paths
- Adapt test scripts for compatibility
- Skip unsupported or non-relevant tests
- Adjust dependency versions if necessary
- Run Tests – Execute the native test suite using the client’s built-in testing framework.
- Analyze Results – Review outcomes, note exceptions, and document final compatibility status.
Testing Patterns
Each client follows its own testing methodology depending on design and tooling:
- Binary Replacement: Common among Java clients (Jedis, Lettuce, Redisson) replacing
redis-server with engula-server.
- Container-Based Testing: Go, Node.js, Python, and .NET libraries use Docker containers for environment consistency.
- Configuration Adjustments: Some require edits to environment variables or configuration files only.
Testing Scope
Tests validate Engula’s compatibility across the following Redis features:
- Connection Management: Pooling, reconnection, and timeout handling
- Command Execution: Validation of all standard Redis commands supported by Engula
- Data Structures: Strings, Hashes, Lists, Sets, Sorted Sets, Streams, Bitmaps, HyperLogLogs, and Geospatial types
- Transactions:
MULTI/EXEC and WATCH/UNWATCH mechanisms
- Pub/Sub: Publish-subscribe messaging patterns
- Pipelining: Batched command execution
- Advanced Features:
- Redisson’s distributed objects
- Lettuce’s reactive API
- Async capabilities across node-redis and redis-py
Test Frameworks
Different language clients use their own native test runners:
| Language |
Framework |
| Go |
ginkgo |
| Java |
JUnit 5 |
| Node.js |
mocha |
| Python |
pytest |
| .NET |
dotnet test |
Supported Clients
Engula has been tested successfully with the following client libraries:
| Client Library |
Language |
Status |
| 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 |
Test Results Summary
Compatibility Status
All tested clients achieved ✅ Full Compatibility with Engula through:
- Protocol-level Support: Full RESP2 and RESP3 compliance
- Command-level Equivalence: Complete coverage of Redis command semantics
- Minor Adjustments Only: Small environment-specific changes as described in the detailed testing guide
Modification Scope
| Modification Level |
Clients |
Description |
| Minimal |
go-redis, node-redis, NRedisStack, redis-py |
Simple environment/config adjustments |
| Moderate |
Jedis, Lettuce |
Executable replacement and minor test patching |
| Extensive |
Redisson |
Binary substitution, dependency tuning, and selective test modifications |
Protocol Support
- Supported Versions: RESP2 and RESP3
- Protocol Compatibility: Fully aligned with Redis® and Valkey protocol specifications
Detailed Testing Documentation
For complete, step-by-step procedures and individual test reports, refer to the comprehensive documentation:
📘 View Detailed Client Compatibility Testing Guide
The guide includes:
- Step-by-step setup instructions per client
- Environment and Docker configurations
- Code and configuration modifications
- Command-line test execution examples
- Detailed result analysis per library
Test Environment
| Component |
Description |
| Protocols |
RESP2 and RESP3 |
| Connection Method |
Docker networks or localhost:6379 |
| Framework |
Client-specific (see table above) |
For complete version pairings and test configurations, see the Detailed Testing Documentation.
Contributing
We welcome community participation. If you identify any compatibility issues or have new client testing results, please reach out to:
📧 support@montplex.com
Note: Compatibility testing is a continuous process. Results may vary depending on the Engula and client library versions.
For the latest findings, consult the full testing overview.