Valkey: o fork do Redis que você precisa conhecer
1. O contexto do fork: por que o Valkey surgiu?
Em março de 2024, a Redis Labs anunciou a mudança de licenciamento do Redis de BSD para uma licença dupla (RSALv2 e SSPL), efetivamente tornando o Redis não mais um software open-source no sentido tradicional. Essa decisão gerou controvérsia na comunidade, especialmente entre provedores de nuvem e empresas que dependiam do Redis como componente central de suas infraestruturas.
Em resposta, a Linux Foundation anunciou o fork do projeto sob o nome Valkey. O objetivo principal era claro: manter o Redis verdadeiramente open-source, com governança neutra e participação da comunidade. Empresas como AWS, Google Cloud, Oracle e Ericsson apoiaram publicamente o fork, contribuindo com mantenedores e recursos.
O Valkey nasceu com três objetivos fundamentais:
- Manter compatibilidade total com o ecossistema Redis existente
- Evoluir o projeto com governança aberta e transparente
- Garantir liberdade de uso para todos, sem restrições de licenciamento
2. Instalação e primeiros passos com Valkey
A instalação do Valkey é simples e pode ser feita de várias formas. A maneira mais rápida é via Docker:
docker run -d --name valkey-server -p 6379:6379 valkey/valkey:7.2
Para instalação nativa no Ubuntu/Debian:
sudo apt update
sudo apt install valkey-server valkey-cli
No CentOS/RHEL:
sudo yum install valkey-server valkey-cli
Após a instalação, inicie o servidor:
valkey-server /etc/valkey/valkey.conf
Conecte-se usando o cliente:
valkey-cli -h 127.0.0.1 -p 6379
Teste os comandos básicos:
127.0.0.1:6379> SET saudacao "Olá, Valkey!"
OK
127.0.0.1:6379> GET saudacao
"Olá, Valkey!"
127.0.0.1:6379> PING
PONG
A configuração principal fica no arquivo valkey.conf. Para migrar do Redis, basta copiar seu redis.conf e renomear para valkey.conf — a sintaxe é praticamente idêntica.
3. Compatibilidade total com Redis: o que muda (e o que não muda)
O Valkey foi projetado para ser 100% compatível com o Redis. Isso significa que:
- Protocolos: Suporta RESP2 e RESP3
- Comandos: Todos os comandos Redis funcionam no Valkey
- Estruturas de dados: Strings, hashes, listas, sets, sorted sets, streams, HyperLogLog, Bitmaps, Geospatial
- Clientes: Bibliotecas como
ioredis(Node.js),redis-py(Python),jedis(Java) funcionam sem alterações
Exemplo com Python usando redis-py:
import redis
r = redis.Redis(host='localhost', port=6379, decode_responses=True)
r.set('chave', 'valor')
print(r.get('chave')) # Saída: valor
Exemplo com Node.js usando ioredis:
const Redis = require('ioredis');
const redis = new Redis();
redis.set('chave', 'valor').then(() => {
redis.get('chave').then(result => console.log(result));
});
A única diferença perceptível é o nome do binário: valkey-server e valkey-cli no lugar de redis-server e redis-cli.
4. Novidades e diferenciais do Valkey em relação ao Redis
O Valkey já introduz melhorias significativas em relação ao Redis original:
Multithreading otimizado
O Redis sempre foi single-threaded para operações de dados. O Valkey possui melhorias no suporte a threads para operações de E/S e tarefas administrativas, resultando em maior throughput em servidores multi-core.
Otimizações de memória
O Valkey implementa melhorias no gerenciamento de memória, reduzindo o overhead em estruturas de dados grandes. Testes internos mostram economia de 10-15% em cenários de alta carga.
Novos comandos da comunidade
Comunidade ativa já propõe novos comandos, como JSON.SETPATH, FT.AGGREGATE aprimorado e melhorias no módulo de streams.
Governança aberta
Diferente do Redis, onde as decisões são centralizadas na Redis Labs, o Valkey tem um comitê técnico eleito pela comunidade e roadmap definido publicamente no GitHub.
5. Casos de uso práticos: substituindo Redis por Valkey
Cache de sessão com fallback zero
Configuração básica para cache:
# valkey.conf
maxmemory 256mb
maxmemory-policy allkeys-lru
save 900 1
save 300 10
save 60 10000
Aplicação em Node.js:
const session = require('express-session');
const RedisStore = require('connect-redis')(session);
const Redis = require('ioredis');
const client = new Redis({
host: 'localhost',
port: 6379,
retryStrategy: (times) => Math.min(times * 50, 2000)
});
app.use(session({
store: new RedisStore({ client }),
secret: 'seu-segredo',
resave: false,
saveUninitialized: false
}));
Filas de mensagens com pub/sub
# Produtor
valkey-cli PUBLISH canal "Mensagem importante"
# Consumidor (em terminal separado)
valkey-cli SUBSCRIBE canal
Migração de Redis para Valkey
Passo a passo para migração com zero downtime:
# 1. Fazer dump do Redis
redis-cli SAVE
# 2. Copiar dump.rdb para o Valkey
cp /var/lib/redis/dump.rdb /var/lib/valkey/dump.rdb
# 3. Iniciar Valkey
valkey-server /etc/valkey/valkey.conf
# 4. Testar dados
valkey-cli KEYS "*"
# 5. Redirecionar aplicações para nova porta (ou manter mesma porta)
6. Monitoramento, backup e operações no dia a dia
Monitoramento com Prometheus
Instale o exportador Valkey:
docker run -d --name valkey-exporter \
-p 9121:9121 \
oliver006/redis_exporter \
-redis.addr redis://localhost:6379
Configure no Prometheus:
scrape_configs:
- job_name: 'valkey'
static_configs:
- targets: ['localhost:9121']
Backup com RDB e AOF
Agende backups automáticos:
# /etc/cron.d/valkey-backup
0 3 * * * root valkey-cli BGSAVE
0 4 * * * root cp /var/lib/valkey/dump.rdb /backup/valkey-$(date +\%Y\%m\%d).rdb
Health checks
# Script simples de health check
#!/bin/bash
if valkey-cli PING > /dev/null 2>&1; then
echo "Valkey está saudável"
exit 0
else
echo "Valkey não responde"
exit 1
fi
7. O futuro do Valkey e da ecossistema de bancos in-memory
O roadmap do Valkey inclui:
- Suporte nativo a JSON com índices secundários
- Melhorias no cluster para escalabilidade horizontal
- Integração com Vector Similarity Search para aplicações de IA
- Suporte a múltiplos bancos de dados com isolamento total
Grandes players já adotaram o Valkey:
- AWS: Oferece Valkey como serviço gerenciado (Amazon MemoryDB for Valkey)
- Google Cloud: Suporte nativo no Memorystore
- Oracle: Integração com MySQL HeatWave
Para decidir entre Valkey, Redis (licenciado) e alternativas como Dragonfly ou KeyDB, considere:
- Valkey: Se você valoriza open-source real e governança comunitária
- Redis: Se precisa de suporte comercial oficial da Redis Labs
- Dragonfly: Se busca desempenho extremo em ambientes multi-core
- KeyDB: Se precisa de multithreading nativo e compatibilidade com Redis
O Valkey representa o futuro do Redis original: uma ferramenta livre, aberta e mantida pela comunidade. Se você já usa Redis, a migração é trivial. Se está começando, comece com Valkey — você não perderá nada e ganhará um ecossistema verdadeiramente aberto.
Referências
- Documentação oficial do Valkey — Documentação completa com guias de instalação, configuração e referência de comandos
- Repositório GitHub do Valkey — Código-fonte, issues e discussões da comunidade
- Anúncio oficial do fork pela Linux Foundation — Comunicado de imprensa sobre a criação do projeto
- Guia de migração de Redis para Valkey — Tutorial passo a passo para migrar instâncias Redis existentes
- Comparativo de desempenho Valkey vs Redis — Benchmarks atualizados comparando throughput, latência e uso de memória
- Tutorial de monitoramento com Prometheus e Grafana — Guia prático para configurar métricas e alertas
- Roadmap público do Valkey — Planejamento de funcionalidades futuras e releases