Valkey: O sucessor open source do Redis
Compatibilidade com Redis
Descubra o nível de compatibilidade com Redis, diferenças atuais e o que muda na migração.
Nesta aula você vai
- Mapear compatibilidade de protocolo, comandos e clientes entre Valkey e Redis
- Identificar diferenças de versão, módulos e features enterprise que quebram migração
- Planejar testes de regressão para troca de servidor com risco mínimo
Compatibilidade com Redis
Objetivos
Nesta aula você vai:
- Avaliar o grau de compatibilidade "drop-in" do Valkey em relação ao Redis
- Listar pontos de atenção: módulos, ACL, versões e comandos novos
- Definir checklist de migração com testes automatizados e canary
Introdução
A promessa central do Valkey é compatibilidade com o ecossistema Redis: mesmo protocolo RESP, mesmos clientes (redis-py, Lettuce, ioredis, go-redis), mesmos comandos core que sua aplicação já usa. Na prática, migração tranquila é comum para workloads padrão — cache, sessão, filas com lists/streams, rate limit.
Compatibilidade não é identidade absoluta. Divergências aparecem em módulos proprietários, features lançadas só em um lado e detalhes de versão. Esta aula separa o que migra sem atrito do que exige engenharia.
Conteúdo
Protocolo e clientes
| Camada | Compatibilidade |
|---|---|
| RESP2 / RESP3 | Alta — negociação padrão |
| Clientes Redis genéricos | Alta — conexão transparente |
| Redis Cluster protocol | Alta — slots, MOVED, ASK |
| Sentinel | Suportado — nomenclatura REPLICAOF vs SLAVEOF modernizada em ambos |
Trocar endpoint de redis-master:6379 para valkey-master:6379 raramente exige alteração de código se você usa apenas comandos documentados e estável.
Exemplo com redis-cli universal:
redis-cli -h valkey-host -p 6379 -a "$AUTH" PING
INFO keyspace
Comandos e comportamento core
Valkey herdou o conjunto de comandos do Redis 7.2 BSD: strings, hashes, lists, sets, sorted sets, streams, HyperLogLog, bitmaps, geospatial, transactions, Lua, functions.
Comportamentos preservados:
- Single-threaded execution model
- Expiration passive/active
- RDB e AOF semantics
- Replication e Cluster architecture
Diferenças evolutivas: após o fork, Redis Ltd. e Valkey podem adicionar comandos independentes. Antes de upgrade major, compare release notes:
- Valkey release notes (GitHub / valkey.io)
- Redis release notes (redis.io)
Feature presente só em Redis 8+ pode não existir em Valkey na mesma versão numérica — não assuma paridade de número de versão.
Módulos e extensões
Maior fonte de incompatibilidade:
| Situação | Risco |
|---|---|
| RedisJSON / RediSearch / RedisBloom na app | Verificar port Valkey ou alternativa |
Módulos carregados via loadmodule |
Testar em staging — ABI pode diferir |
| Lua scripts com APIs internas não documentadas | Quebra possível |
Valkey e comunidade desenvolvem módulos ou integrações equivalentes — avalie caso a caso. Workloads sem módulos migram com menor risco.
Ferramentas operacionais
| Ferramenta | Nota |
|---|---|
redis-cli |
Funciona contra Valkey |
redis-benchmark |
Benchmark genérico |
| Exporters Prometheus | Métricas similares; labels podem citar valkey |
redis-check-aof / redis-check-rdb |
Utilitários compatíveis (nomenclatura Valkey em alguns pacotes) |
Scripts de backup que copiam dump.rdb e appendonly.aof permanecem válidos — formato herdado.
Matriz de decisão de migração
Usa apenas comandos core + Spring Data Redis / cliente padrão?
├── Sim → Migração provável low-risk
└── Não → Usa módulos Redis Ltd.?
├── Sim → PoC obrigatório; buscar equivalente Valkey
└── Não → Usa comando bleeding-edge só Redis 8?
├── Sim → Comparar suporte Valkey na versão alvo
└── Não → Prossiga com checklist de testes
Exemplos práticos
Suite mínima de smoke test pós-migração:
# Strings e TTL
SET compat:test "ok" EX 60
GET compat:test
# Hash
HSET compat:hash field1 "a"
HGET compat:hash field1
# Stream + group
XADD compat:stream * event "migrate"
XGROUP CREATE compat:stream cg $ MKSTREAM
XREADGROUP GROUP cg c1 COUNT 1 STREAMS compat:stream >
XACK compat:stream cg <id-retornado>
# Lua
EVAL "return redis.call('INCR', KEYS[1])" 1 compat:counter
# Limpeza
DEL compat:test compat:hash compat:stream compat:counter
Automatize em CI contra container Valkey antes de alterar produção.
Comparar comandos disponíveis:
redis-cli COMMAND COUNT
redis-cli COMMAND INFO GET
Contagem muito inferior à versão anterior pode indicar build minimal ou ACL restritiva — investigue antes de go-live.
Canary em produção:
- Nova instância Valkey com réplica de dados (ou dual-write temporário)
- 5% tráfego read-only via feature flag
- Monitorar error rate, latência p99,
rejected_connections - Cutover DNS/endpoint após 24–48h estáveis
Resumo
- Valkey é altamente compatível com protocolo RESP e clientes Redis para workloads core.
- Risco concentra-se em módulos, scripts obscuros e features pós-fork exclusivas de um lado.
- Versão numérica Valkey 8 ≠ conjunto idêntico ao Redis 8 — compare release notes.
- Smoke tests automatizados e deploy canary reduzem surpresa em produção.
- Próxima aula: critérios de negócio para quando adotar Valkey versus permanecer em Redis Ltd.