Skip to content

Commit 2c79174

Browse files
authored
Improvements to the Lettuce guide (#3655)
- added some information about compatibility with Netty, Redis and Java - extend the list of new features
1 parent 021116b commit 2c79174

4 files changed

Lines changed: 156 additions & 1 deletion

File tree

docs/compatibility-roadmap.md

Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
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+

docs/new-features.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,25 @@
11
# New & Noteworthy
22

33

4+
## What's new in Lettuce 7.2
5+
6+
- Support for [`FT.HYBRID`](https://redis.io/docs/latest/commands/ft.hybrid/) command enabling hybrid vector and full-text search queries
7+
- Ability to expose upstream driver libraries in [`CLIENT SETINFO`](https://redis.io/docs/latest/commands/client-setinfo/) payload for better client identification
8+
9+
## What's new in Lettuce 7.1
10+
11+
- Support for [`XREADGROUP`](https://redis.io/docs/latest/commands/xreadgroup/) with `CLAIM` argument for atomic message claiming in Redis Streams consumer groups
12+
- [Compare-and-Set (CAS) / Compare-and-Delete (CAD)](https://redis.io/docs/latest/commands/set/) commands through `DIGEST`, `DELEX` and `SET` extensions for optimistic locking patterns
13+
- Support for [`MSETEX`](https://redis.io/docs/latest/commands/msetex/) command to atomically set multiple keys with expiration
14+
15+
## What's new in Lettuce 7.0
16+
17+
- [Maintenance events support](advanced-usage.md) for graceful handling of Redis maintenance operations enabling hitless upgrades
18+
- Upgrade to [Netty 4.2](https://github.com/netty/netty/releases/tag/netty-4.2.0.Final) with adaptive memory allocator and improved threading model
19+
- [RediSearch](user-guide/redis-search.md) cluster mode support with cursor sticking and read operation distribution across nodes
20+
- String-based JSON API to avoid unnecessary byte-to-string conversions
21+
- Removal of deprecated APIs as part of major version cleanup
22+
423
## What’s new in Lettuce 6.8
524
- [RediSearch support](user-guide/redis-search.md) through `RediSearchCommands` and the respective reactive, async and Kotlin APIs
625

docs/overview.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ Lettuce is a scalable thread-safe Redis client based on
4242

4343
## Requirements
4444

45-
Lettuce 6.x binaries require JDK level 8.0 and above.
45+
Lettuce 7.x binaries require JDK level 8.0 and above.
4646

4747
In terms of [Redis](https://redis.io/), at least 2.6.
4848

mkdocs.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ nav:
4949
- Overview: overview.md
5050
- New & Noteworthy: new-features.md
5151
- Getting Started: getting-started.md
52+
- Compatibility & Roadmap: compatibility-roadmap.md
5253
- User Guide:
5354
- Connecting Redis: user-guide/connecting-redis.md
5455
- Asynchronous API: user-guide/async-api.md

0 commit comments

Comments
 (0)