Client Redis pour Kotlin : Lettuce et Kreds — comparaison et exemples

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Client Redis pour Kotlin : aperçu et comparaison des bibliothèques populaires



Redis est un magasin de données clé-valeur haute performance, largement utilisé pour la mise en cache, les sessions, les files d'attente et les applications en temps réel. Pour le langage Kotlin, il existe plusieurs clients matures qui permettent d'interagir efficacement avec Redis. Dans cet article, nous examinons deux bibliothèques principales : Lettuce (asynchrone, non bloquante) et Kreds (spécialisée pour Kotlin avec prise en charge des coroutines).



1. Lettuce — un client puissant et flexible pour la JVM



Lettuce est un client Redis asynchrone en Java qui fonctionne parfaitement dans les projets Kotlin. Il prend en charge les API synchrones, asynchrones (basées sur CompletableFuture) et réactives (Project Reactor / RxJava). Lettuce est l'une des solutions les plus populaires pour Spring Boot et les microservices.



Ajout de la dépendance (Gradle)

dependencies {    implementation("io.lettuce:lettuce-core:6.3.2.RELEASE")}


Exemple de connexion synchrone et d'opérations

import io.lettuce.core.RedisClientimport io.lettuce.core.api.sync.RedisCommands

fun main() { val client = RedisClient.create("redis://localhost:6379") val connection = client.connect() val commands: RedisCommands<String, String> = connection.sync()

// Définition et récupération d'une valeur commands.set("mykey", "Bonjour de Lettuce !") val value = commands.get("mykey") println("Valeur : $value") // Bonjour de Lettuce !

// Travail avec les hachages commands.hset("user:1", "name", "Alice") commands.hset("user:1", "age", "30") val name = commands.hget("user:1", "name") println("Nom de l'utilisateur : $name")

connection.close() client.shutdown()}


Mode asynchrone avec les coroutines

Lettuce prend en charge l'API asynchrone via CompletableFuture, facilement adaptable aux coroutines Kotlin avec await() :

import kotlinx.coroutines.runBlockingimport kotlinx.coroutines.future.await

fun main() = runBlocking { val client = RedisClient.create("redis://localhost:6379") val connection = client.connect() val asyncCommands = connection.async()

val result = asyncCommands.set("coroutine-key", "Kotlin + Lettuce").await() println("Résultat du set : $result")

val value = asyncCommands.get("coroutine-key").await() println("Valeur : $value")

connection.close() client.shutdown()}


2. Kreds — un client Kotlin-first avec coroutines



Kreds est un client Redis moderne, entièrement écrit en Kotlin. Il prend en charge nativement les coroutines, Flow et la sérialisation via kotlinx.serialization. Kreds utilise Netty en interne, mais fournit une API Kotlin pure.



Ajout de la dépendance (Gradle)

dependencies {    implementation("io.ktor:kreds:0.9.0")}


Exemple d'utilisation de base

import io.kreds.client.RedisClient

suspend fun main() { val client = RedisClient("localhost", 6379)

client.set("kreds-key", "Bonjour de Kreds !") val value = client.get("kreds-key") println("Valeur : $value")

// Travail avec les listes client.lpush("mylist", "A", "B", "C") val item = client.rpop("mylist") println("Élément dépilé : $item")

client.close()}


Utilisation de Flow pour s'abonner aux canaux

Kreds prend en charge Pub/Sub via Kotlin Flow, pratique pour les applications réactives :

import io.kreds.client.RedisClientimport kotlinx.coroutines.flow.collect

suspend fun main() { val client = RedisClient("localhost", 6379)

client.subscribe("channel-1").collect { message -> println("Reçu : ${message.payload}") }}


3. Comparaison de Lettuce et Kreds



Recommendations

Caractéristique