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.

Intermediário 45 min 30 pontos Leitura 0%

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:

  1. Nova instância Valkey com réplica de dados (ou dual-write temporário)
  2. 5% tráfego read-only via feature flag
  3. Monitorar error rate, latência p99, rejected_connections
  4. 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.