Lettuce : un client Java pour Redis autour des connexions partagées
Client Java Redis avancé pour une synchronisation sécurisée, une utilisation asynchrone et réactive. Prend en charge Cluster, Sentinel, Pipelining et les codecs.
En bref
- De quoi s’agit-il ?
- Un client Redis thread-safe pour une utilisation synchrone, asynchrone et réactive, avec le support de Sentinel, Cluster et codecs.
- À qui s’adresse-t-il ?
- Le README de Lettuce le présente comme un client basé sur Netty capable de partager une connexion entre des chemins de code synchrones, asynchrones et réactifs, avec la prise en charge de Sentinel, Cluster et plusieurs modules Redis. Comme le README ne détaille pas la sémantique exacte de ces fonctions ni leur comportement en production, la documentation de référence et la page Maven Central constituent les prochaines étapes logiques.
- Puis-je l’utiliser commercialement ?
- Oui. MIT est une licence permissive : vous pouvez utiliser, modifier et vendre un logiciel qui en dépend, à condition de conserver les mentions de droit d’auteur et de licence.
- Est-il encore maintenu ?
- Oui. Les derniers commits datent d’il y a 2 jours.
- En quel langage est-il écrit ?
- Principalement Java, d’après les statistiques de langage de GitHub.
Ces réponses reposent sur les données GitHub du projet (dernière synchronisation le 14 septembre 2026) et sur notre analyse. Elles ne constituent pas un avis juridique.
ANALYSE OPEN SOURCE APPROFONDIE
Une seule connexion pour trois API
Lettuce est un client Java pour Redis qui expose des interfaces de commandes synchrones, asynchrones et réactives depuis une même connexion. Selon le README, plusieurs threads peuvent partager une connexion, à condition d'éviter les opérations bloquantes et transactionnelles telles que BLPOP et MULTI/EXEC. Le client est construit sur Netty, et le dépôt indique que cette version a été testée avec la dernière compilation source de Redis. Le même objet de connexion peut donc servir aussi bien pour des appels get/set simples, des appels basés sur Future, que pour des flux réactifs.
Pour redis/lettuce, le matériau source indique : Advanced Java Redis client for thread-safe sync, async, and reactive usage. Supports Cluster, Sentinel, Pipelining, and codecs.. Le README associe ce dépôt au langage Java, à la licence MIT et à la branche main. Ces données bornent l analyse : elles décrivent le projet publié, sans fournir à elles seules une mesure de performance ou une garantie de support.
Comment les méthodes de commande sont nommées
Plutôt que de créer une API distincte pour chaque commande Redis, Lettuce fait correspondre les commandes directement à des noms de méthodes Java. Le README indique que chaque commande Redis est implémentée par une ou plusieurs méthodes dont le nom est identique au nom de commande Redis en minuscules. Lorsqu'une commande possède des modificateurs qui changent le type de résultat, le nom de méthode ajoute un modificateur en camelCase ; l'exemple donné est zrangebyscore pour la forme de base et zrangebyscoreWithScores pour la variante qui renvoie les scores. Cette convention de nommage est documentée dans la section Basic usage, avec un lien vers la documentation de référence.
Exemples asynchrones et réactifs du README
Le README contient de courts exemples de code pour les deux API. Dans l'exemple asynchrone, connection.async() renvoie un objet RedisStringAsyncCommands, et des appels comme async.set("key", "value") produisent un RedisFuture. L'exemple utilise LettuceFutures.awaitAll(set, get) pour attendre les deux futurs, puis compare les résultats à "OK" et "value". L'exemple réactif utilise connection.reactive() pour obtenir RedisStringReactiveCommands, enveloppe les appels set et get dans Mono, s'abonne à l'opération set et bloque sur get. Ces exemples sont illustratifs et ne comportent ni gestion d'erreurs ni cycle de vie de la connexion.
Topologies Redis et options de connexion
Outre un serveur Redis unique, Lettuce prend en charge Redis Sentinel, Redis Cluster, les connexions SSL et les connexions par socket de domaine Unix. Le README mentionne également une API de streaming, des codecs pour des représentations de données telles que UTF-8, bit et JSON, plusieurs interfaces de commande, des transports natifs, ainsi que l'intégration avec RediSearch, RedisJSON et Redis Vector Sets. Le client est décrit comme compatible avec Java 8 et ultérieur, avec un module automatique implicite et sans descripteurs. La sémantique exacte de ces fonctionnalités n'est pas détaillée dans le README ; il renvoie à la documentation de référence.
Ajouter la dépendance et compiler depuis les sources
Les versions publiées sont disponibles sur Maven Central, et le README montre une dépendance Maven avec groupId io.lettuce, artifactId lettuce-core et une version à remplacer par la version publiée choisie. Les versions snapshot sont disponibles dans le dépôt de snapshots Sonatype, avec des chaînes de version se terminant par BUILD-SNAPSHOT. La compilation de Lettuce nécessite Apache Maven et plusieurs instances Redis en cours d'exécution pour les tests ; les cibles Makefile make start, make test, make stop et make clean sont documentées, et les tests s'exécutent par défaut contre Redis latest. Le README ne mentionne pas explicitement de coordonnées Gradle ou Ivy, mais précise que les binaires et les informations de dépendance pour ces outils se trouvent sur search.maven.org.
Origine du dépôt et limites de la licence
Ce dépôt est un fork de github.com/wg/lettuce et est publié sous licence MIT, avec un copyright attribué à Redis Ltd. à partir de 2023. La licence autorise l'utilisation, la copie, la modification, la fusion, la publication, la distribution, la sous-licence et la vente de copies du logiciel, et exige que l'avis de copyright soit inclus dans les parties substantielles. Le logiciel est fourni tel quel, sans garantie d'aucune sorte. Le README lui-même ne contient pas de benchmarks de performance, de garanties de disponibilité ou de déclarations de sécurité, et il oriente les bugs et questions vers GitHub Issues. Ces limites ne sont pas des jugements sur la qualité du projet, elles reflètent simplement l'absence de ces informations dans le matériel source.
Conclusion éditoriale
Le README de Lettuce le présente comme un client basé sur Netty capable de partager une connexion entre des chemins de code synchrones, asynchrones et réactifs, avec la prise en charge de Sentinel, Cluster et plusieurs modules Redis. Comme le README ne détaille pas la sémantique exacte de ces fonctions ni leur comportement en production, la documentation de référence et la page Maven Central constituent les prochaines étapes logiques.
Notes de la communauté