|
| 1 | +# Compatibility and Roadmap |
| 2 | + |
| 3 | +This page provides an overview of Lettuce compatibility with Java, Netty, and Redis versions, along with a timeline of major features introduced in each release. |
| 4 | + |
| 5 | +## Redis Modules and Features Support |
| 6 | + |
| 7 | +Lettuce provides native support for Redis core data types and select Redis modules. The tables below show the current support status. |
| 8 | + |
| 9 | +### Supported Core Data Types |
| 10 | + |
| 11 | +| Data Type | Support Status | Since Version | Notes | |
| 12 | +|-----------|---------------|---------------|-------| |
| 13 | +| [Strings](https://redis.io/docs/latest/develop/data-types/strings/) | Supported | 1.0 | Full support including `SET`, `GET`, `MSET`, `MGET`, etc. | |
| 14 | +| [Hashes](https://redis.io/docs/latest/develop/data-types/hashes/) | Supported | 1.0 | Full support including Hash Field Expiration (6.4+) | |
| 15 | +| [Lists](https://redis.io/docs/latest/develop/data-types/lists/) | Supported | 1.0 | Full support including blocking operations | |
| 16 | +| [Sets](https://redis.io/docs/latest/develop/data-types/sets/) | Supported | 1.0 | Full support | |
| 17 | +| [Sorted Sets](https://redis.io/docs/latest/develop/data-types/sorted-sets/) | Supported | 1.0 | Full support | |
| 18 | +| [Streams](https://redis.io/docs/latest/develop/data-types/streams/) | Supported | 5.1 | Full support for `XADD`, `XREAD`, `XREADGROUP`, etc. | |
| 19 | +| [HyperLogLog](https://redis.io/docs/latest/develop/data-types/hyperloglogs/) | Supported | 1.0 | Full support | |
| 20 | +| [Geospatial](https://redis.io/docs/latest/develop/data-types/geospatial/) | Supported | 4.0 | Full support for `GEO*` commands | |
| 21 | +| [Bitmaps](https://redis.io/docs/latest/develop/data-types/bitmaps/) | Supported | 1.0 | Full support | |
| 22 | +| [Bitfields](https://redis.io/docs/latest/develop/data-types/bitfields/) | Supported | 4.2 | Full support | |
| 23 | +| [Vector Sets](https://redis.io/docs/latest/develop/data-types/vector-sets/) | Supported | 6.7 | Full support for `VADD`, `VSIM`, `VCARD`, etc. | |
| 24 | + |
| 25 | +### Supported Redis Modules / Features |
| 26 | + |
| 27 | +| Module / Feature | Support Status | Since Version | Documentation | |
| 28 | +|------------------|---------------|---------------|---------------| |
| 29 | +| [RedisJSON](https://redis.io/docs/latest/develop/data-types/json/) | Supported | 6.5 | [Redis JSON Guide](user-guide/redis-json.md) | |
| 30 | +| [RediSearch (Query Engine)](https://redis.io/docs/latest/develop/interact/search-and-query/) | Supported | 6.8 | [Redis Search Guide](user-guide/redis-search.md) | |
| 31 | +| [Vector Search](https://redis.io/docs/latest/develop/interact/search-and-query/query/vector-search/) | Supported | 6.8 | Part of RediSearch support | |
| 32 | +| [Pub/Sub](https://redis.io/docs/latest/develop/interact/pubsub/) | Supported | 1.0 | Full support including Sharded Pub/Sub (6.4+) | |
| 33 | +| [Transactions](https://redis.io/docs/latest/develop/interact/transactions/) | Supported | 1.0 | `MULTI`/`EXEC`/`WATCH` | |
| 34 | +| [Scripting (Lua)](https://redis.io/docs/latest/develop/interact/programmability/eval-intro/) | Supported | 1.0 | `EVAL`, `EVALSHA`, `SCRIPT` commands | |
| 35 | +| [Functions](https://redis.io/docs/latest/develop/interact/programmability/functions-intro/) | Supported | 6.3 | `FCALL`, `FUNCTION LOAD`, etc. | |
| 36 | +| [ACL](https://redis.io/docs/latest/operate/oss_and_stack/management/security/acl/) | Supported | 6.0 | Full ACL command support | |
| 37 | +| [Client Tracking](https://redis.io/docs/latest/develop/use/client-side-caching/) | Supported | 6.5 | `CLIENT TRACKING` command | |
| 38 | + |
| 39 | +### Unsupported Redis Modules |
| 40 | + |
| 41 | +| Module | Support Status | Notes | |
| 42 | +|--------|---------------|-------| |
| 43 | +| [RedisTimeSeries](https://redis.io/docs/latest/develop/data-types/timeseries/) | Not Supported | Use [Redis Command Interfaces](redis-command-interfaces.md) for custom commands | |
| 44 | +| [RedisBloom](https://redis.io/docs/latest/develop/data-types/probabilistic/) | Not Supported | Use [Redis Command Interfaces](redis-command-interfaces.md) for custom commands | |
| 45 | +| [RedisGraph](https://redis.io/docs/latest/operate/oss_and_stack/stack-with-enterprise/deprecated-features/graph/) | Not Supported | Deprecated by Redis; use [Redis Command Interfaces](redis-command-interfaces.md) | |
| 46 | +| [Triggers and Functions](https://redis.io/docs/latest/operate/oss_and_stack/stack-with-enterprise/deprecated-features/triggers-and-functions/) | Not Supported | Use [Redis Command Interfaces](redis-command-interfaces.md) for custom commands | |
| 47 | + |
| 48 | +> **Note:** For unsupported modules, Lettuce provides the [Redis Command Interfaces](redis-command-interfaces.md) feature which allows you to define custom command interfaces for any Redis module. This enables type-safe access to module commands without waiting for native driver support. |
| 49 | +
|
| 50 | +### Example: Using Custom Commands for Unsupported Modules |
| 51 | + |
| 52 | +```java |
| 53 | +// Define a custom interface for RedisTimeSeries commands |
| 54 | +interface TimeSeriesCommands extends Commands { |
| 55 | + |
| 56 | + @Command("TS.CREATE") |
| 57 | + String tsCreate(String key); |
| 58 | + |
| 59 | + @Command("TS.ADD") |
| 60 | + Long tsAdd(String key, long timestamp, double value); |
| 61 | + |
| 62 | + @Command("TS.GET") |
| 63 | + List<Object> tsGet(String key); |
| 64 | +} |
| 65 | + |
| 66 | +// Use the custom commands |
| 67 | +RedisCommandFactory factory = new RedisCommandFactory(connection); |
| 68 | +TimeSeriesCommands ts = factory.getCommands(TimeSeriesCommands.class); |
| 69 | +ts.tsCreate("sensor:temperature"); |
| 70 | +ts.tsAdd("sensor:temperature", System.currentTimeMillis(), 23.5); |
| 71 | +``` |
| 72 | + |
| 73 | + |
| 74 | +## Java Compatibility |
| 75 | + |
| 76 | +Lettuce requires **Java 8** as the minimum version since Lettuce 5.0. The table below shows Java compatibility by Lettuce version: |
| 77 | + |
| 78 | +| Lettuce Version | Minimum Java | Tested Up To | |
| 79 | +|-----------------------------------------------------------------------------------------------------------------------------------------|--------------|--------------| |
| 80 | +| [5.0](https://github.com/redis/lettuce/releases/tag/5.0.0.RELEASE) - [5.3](https://github.com/redis/lettuce/releases/tag/5.3.0.RELEASE) | Java 8 | Java 11 | |
| 81 | +| [6.0](https://github.com/redis/lettuce/releases/tag/6.0.0.RELEASE) - [6.8](https://github.com/redis/lettuce/releases/tag/6.8.0.RELEASE) | Java 8 | Java 21 | |
| 82 | +| [7.0](https://github.com/redis/lettuce/releases/tag/7.0.0.RELEASE) and later | Java 8 | Java 24 | |
| 83 | + |
| 84 | +> **Note:** Lettuce 6.x and 7.x binaries are compiled with Java 8 as the target but are tested against newer Java versions including the latest LTS releases. |
| 85 | +
|
| 86 | +## Netty Driver Versions |
| 87 | + |
| 88 | +Lettuce is built on top of [Netty](https://netty.io/) for networking. The tables below show the specific Netty versions used by each Lettuce release. |
| 89 | + |
| 90 | +### Version Mapping Table |
| 91 | + |
| 92 | +| Lettuce Version | Netty Version | |
| 93 | +|--------------------------------------------------------------------------------|----------------------------------------------------------------------------------| |
| 94 | +| [6.0.8.RELEASE](https://github.com/redis/lettuce/releases/tag/6.0.8.RELEASE) | [4.1.60.Final](https://github.com/netty/netty/releases/tag/netty-4.1.60.Final) | |
| 95 | +| [6.1.10.RELEASE](https://github.com/redis/lettuce/releases/tag/6.1.10.RELEASE) | [4.1.89.Final](https://github.com/netty/netty/releases/tag/netty-4.1.89.Final) | |
| 96 | +| [6.2.7.RELEASE](https://github.com/redis/lettuce/releases/tag/6.2.7.RELEASE) | [4.1.94.Final](https://github.com/netty/netty/releases/tag/netty-4.1.94.Final) | |
| 97 | +| [6.3.2.RELEASE](https://github.com/redis/lettuce/releases/tag/6.3.2.RELEASE) | [4.1.107.Final](https://github.com/netty/netty/releases/tag/netty-4.1.107.Final) | |
| 98 | +| [6.4.2.RELEASE](https://github.com/redis/lettuce/releases/tag/6.4.2.RELEASE) | [4.1.113.Final](https://github.com/netty/netty/releases/tag/netty-4.1.113.Final) | |
| 99 | +| [6.5.5.RELEASE](https://github.com/redis/lettuce/releases/tag/6.5.5.RELEASE) | [4.1.118.Final](https://github.com/netty/netty/releases/tag/netty-4.1.118.Final) | |
| 100 | +| [6.6.0.RELEASE](https://github.com/redis/lettuce/releases/tag/6.6.0.RELEASE) | [4.1.118.Final](https://github.com/netty/netty/releases/tag/netty-4.1.118.Final) | |
| 101 | +| [6.7.1.RELEASE](https://github.com/redis/lettuce/releases/tag/6.7.1.RELEASE) | [4.1.125.Final](https://github.com/netty/netty/releases/tag/netty-4.1.125.Final) | |
| 102 | +| [6.8.2.RELEASE](https://github.com/redis/lettuce/releases/tag/6.8.2.RELEASE) | [4.1.125.Final](https://github.com/netty/netty/releases/tag/netty-4.1.125.Final) | |
| 103 | +| [7.0.1.RELEASE](https://github.com/redis/lettuce/releases/tag/7.0.1.RELEASE) | [4.2.5.Final](https://github.com/netty/netty/releases/tag/netty-4.2.5.Final) | |
| 104 | +| [7.1.1.RELEASE](https://github.com/redis/lettuce/releases/tag/7.1.1.RELEASE) | [4.2.5.Final](https://github.com/netty/netty/releases/tag/netty-4.2.5.Final) | |
| 105 | +| [7.2.1.RELEASE](https://github.com/redis/lettuce/releases/tag/7.2.1.RELEASE) | [4.2.5.Final](https://github.com/netty/netty/releases/tag/netty-4.2.5.Final) | |
| 106 | + |
| 107 | +### Netty 4.1 to 4.2 Migration |
| 108 | + |
| 109 | +Lettuce 7.0 marks the migration from Netty 4.1.x to Netty 4.2.x, which brings: |
| 110 | + |
| 111 | +- **Adaptive memory allocator** as the default allocator |
| 112 | +- **Updated threading model** for NIO event loops |
| 113 | +- **Performance improvements** in buffer management |
| 114 | + |
| 115 | +> **Note:** Service releases (patch versions) typically inherit the Netty version from the previous patch unless explicitly upgraded for security or stability reasons. |
| 116 | +
|
| 117 | +## Redis Compatibility |
| 118 | + |
| 119 | +Lettuce supports a wide range of Redis versions. See [Redis releases](https://github.com/redis/redis/releases) for details. |
| 120 | + |
| 121 | +| Lettuce Version | Tested Redis Versions | |
| 122 | +|---------------------------------------------------------------------|-----------------------| |
| 123 | +| [5.x](https://github.com/redis/lettuce/releases?q=5.&expanded=true) | Redis 2.6 - 6.0 | |
| 124 | +| [6.x](https://github.com/redis/lettuce/releases?q=6.&expanded=true) | Redis 2.6 - 8.2 | |
| 125 | +| [7.x](https://github.com/redis/lettuce/releases?q=7.&expanded=true) | Redis 2.6 - 8.4 | |
| 126 | + |
| 127 | +> **Note:** Lettuce maintains backward compatibility with older Redis versions while adding support for new features in the latest releases. |
| 128 | +
|
| 129 | +## See Also |
| 130 | + |
| 131 | +- [New Features](new-features.md) - Detailed feature documentation |
| 132 | +- [Getting Started](getting-started.md) - Quick start guide |
| 133 | +- [Overview](overview.md) - Lettuce overview |
| 134 | +- [Redis Command Interfaces](redis-command-interfaces.md) - Custom command support |
| 135 | + |
0 commit comments