Redis
 sql >> Base de Dados >  >> NoSQL >> Redis

Qual é a melhor estratégia para sincronizar dados do Redis com o MySQL?


Você não precisa hackear nada;)

Não tenho certeza do motivo pelo qual você precisa dos dados no mysql. Se eu soubesse, talvez houvesse uma resposta mais adequada. De qualquer forma, como resposta genérica, você pode usar notificações de keyspace redis

Você pode assinar os comandos HSET, HMSET, HDEL e DEL em suas chaves, para receber uma notificação sempre que uma chave for excluída ou um valor de hash for definido ou removido.

Observe que se você perder alguma notificação, você terá uma inconsistência. Então, de vez em quando, você pode usar o comando SCAN para passar por todas as suas chaves e verificar no mysql se elas precisam ser atualizadas.

Outra estratégia poderia ser manter duas estruturas separadas. Um seria o hash com os valores, e o outro seria um ZSET de todos os valores ordenados por timestamp de atualização. A melhor maneira de manter ambas as estruturas atualizadas seria escrever dois ou três scripts lua (inserir/atualizar e excluir) que operariam no hash e no zset atomicamente.

Então você pode apenas consultar periodicamente o ZSET para os elementos com um timestamp maior do que sua última operação de sincronização, obter todas as chaves que foram atualizadas (inclui chaves excluídas, a menos que você queira manter um segundo ZSET exclusivamente para elas) e então apenas recupere todos os elementos por chave e sincronize com o mysql.

Espero que funcione para você!