Todos os produtos
Search
Central de documentação

Data Transmission Service:Inconsistência de dados após sincronização do Redis

Última atualização: Sep 23, 2026

Este tópico descreve como identificar e solucionar inconsistências de dados após a sincronização do Redis.

Descrição do problema

Após usar o Data Transmission Service (DTS) para sincronizar o Redis, os dados ficam inconsistentes entre a origem e o destino.

Exemplo

Após usar o Data Transmission Service (DTS) para sincronizar dados do Redis, execute o comando info keyspace para verifique as chaves na origem e no destino. A saída mostra que os dados estão inconsistentes, com grande proporção de chaves com tempo de expiração.

xxx> info keyspace
# Keyspace
db0:keys=769509,expires=227386,avg_ttl=3426607441
db3:keys=254,expires=0,avg_ttl=0
db2:keys=17,expires=2,avg_ttl=837582
db1:keys=2,expires=0,avg_ttl=0
db15:keys=2,expires=0,avg_ttl=0
[work@rec01 bin]$ ./redis-cli -a 'xxx'
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6379> info keyspace
# Keyspace
db0:keys=772864,expires=230736,avg_ttl=3380950183
db1:keys=2,expires=0,avg_ttl=0
db2:keys=17,expires=2,avg_ttl=868931
db3:keys=254,expires=0,avg_ttl=0
db15:keys=2,expires=0,avg_ttl=0
127.0.0.1:6379>

Causa

Basear-se exclusivamente no valor info keyspace do comando expires para verifique a consistência dos dados é enganoso, pois o comando fornece estimativas, não valores exatos.

  • Na saída do comando info keyspace:

    • keys indica o número total de chaves.

    • expires indica o número de chaves que possuem tempo de expiração, incluindo tanto as chaves ainda válidas quanto as já expiradas.

Por isso, ao usar o valor expires para verifique a consistência, chaves que expiraram logicamente mas ainda não foram exclua ativamente pelo Redis são contabilizadas. Esse comportamento gera uma aparente inconsistência de dados entre a origem e o destino.

Nota

O Redis remove chaves expiradas nas seguintes situações:

  • O Redis limpa periodicamente as chaves expiradas quando a CPU está ociosa.

  • Ao acessar uma chave, o Redis verifique se ela expirou e a remove em caso afirmativo.

  • Durante uma operação SCAN, o Redis verifique e remove as chaves expiradas encontradas.

Para obter mais informações sobre a política de remoção de chaves expiradas no Redis, consulte How Redis Handles Expired Keys.

Solução

Para verifique a consistência dos dados, utilize um dos métodos a seguir:

Nota

Ao verifique a perda de dados após a sincronização, não dependa exclusivamente da estatística expires, pois ela inclui dados que já expiraram e torna o valor de expires uma medida não confiável de consistência.

  1. Nos bancos de dados de origem e destino, subtraia a contagem de keys da contagem de expires para encontrar o número de chaves permanentes. Se a diferença entre os resultados de cada banco de dados for insignificante, os dados podem ser considerados consistentes.

  2. Use a ferramenta redis-full-check para verificação. Para obter mais informações, consulte Use the redis-full-check tool.

Nota

Como fazer com que as contagens de chaves na saída do info keyspace pareçam consistentes?

Recomendamos limpar os dados expirados do Redis. Os métodos para bancos de dados em cloud e bancos de dados autogerenciados são os seguintes:

  • Tair (Redis OSS-Compatible): Faça login no console do Tair (Redis OSS-Compatible) e use o recurso Clear Data. No ApsaraDB for Redis, abra a caixa de diálogo Clear Data no console, selecione a aba Expired Data, escolha um horário de execução (Immediately ou Within Maintenance Window) e clique em OK. Essa ação execute um comando SCAN para exclua em massa todos os dados expirados da instância. A operação é irreversível e os dados excluídos não podem ser recuperados.

  • Banco de dados Redis autogerenciado: use a ferramenta redis-full-check para execute uma verificação. A ferramenta execute comandos como SCAN, acionando a limpeza dos dados expirados durante o processo.