Cliente Redis para Kotlin: Lettuce e Kreds — comparação e exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Cliente Redis para Kotlin: visão geral e comparação de bibliotecas populares



Redis é um armazenamento de dados do tipo chave-valor de alto desempenho, amplamente utilizado para cache, sessões, filas e aplicações em tempo real. Para a linguagem Kotlin, existem vários clientes maduros que permitem interagir eficientemente com o Redis. Neste artigo, veremos duas bibliotecas principais: Lettuce (assíncrono, não bloqueante) e Kreds (especializado para Kotlin com suporte a corrotinas).



1. Lettuce — cliente poderoso e flexível para JVM



Lettuce é um cliente Redis assíncrono em Java que funciona perfeitamente em projetos Kotlin. Ele suporta API síncrona, assíncrona (via CompletableFuture) e reativa (Project Reactor / RxJava). Lettuce é uma das soluções mais populares para Spring Boot e microsserviços.



Conexão (Gradle)

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


Exemplo de conexão síncrona e operações

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()

// Definir e obter valor commands.set("mykey", "Olá do Lettuce!") val value = commands.get("mykey") println("Valor: $value") // Olá do Lettuce!

// Trabalhando com hashes commands.hset("user:1", "name", "Alice") commands.hset("user:1", "age", "30") val name = commands.hget("user:1", "name") println("Nome do usuário: $name")

connection.close() client.shutdown()}


Modo assíncrono com corrotinas

Lettuce suporta API assíncrona via CompletableFuture, que pode ser facilmente adaptada para corrotinas Kotlin usando 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("Resultado do set: $result")

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

connection.close() client.shutdown()}


2. Kreds — cliente Kotlin-first com corrotinas



Kreds é um cliente Redis moderno, escrito inteiramente em Kotlin. Ele suporta nativamente corrotinas, Flow e serialização via kotlinx.serialization. Kreds usa Netty internamente, mas fornece uma API Kotlin pura.



Conexão (Gradle)

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


Exemplo de uso básico

import io.kreds.client.RedisClient

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

client.set("kreds-key", "Olá do Kreds!") val value = client.get("kreds-key") println("Valor: $value")

// Trabalhando com listas client.lpush("mylist", "A", "B", "C") val item = client.rpop("mylist") println("Removido: $item")

client.close()}


Usando Flow para inscrição em canais

Kreds suporta Pub/Sub via Kotlin Flow, o que é conveniente para aplicações reativas:

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

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

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


3. Comparação entre Lettuce e Kreds



Recommendations

Característica