Existe alguma outra maneira de despejar big data do Redis para o MySQL?
O Redis tem a possibilidade (usando bgsave) de gerar um dump dos dados de forma não bloqueante e consistente.
https://github.com/sripathikrishnan/redis-rdb-tools
Você pode usar o pacote conhecido de Sripathi Krishnan para analisar um arquivo de despejo redis (RDB) em Python e preencher a instância do MySQL offline. Ou você pode converter o dump do Redis para o formato JSON e escrever scripts em qualquer idioma que desejar para preencher o MySQL.
Essa solução só é interessante se você quiser copiar os dados completos da instância do Redis para o MySQL.
O Redis tem algum sistema de gatilho que eu possa usar para evitar os crons como o sistema de fila?
O Redis não tem conceito de trigger, mas nada impede que você poste eventos nas filas do Redis toda vez que algo deve ser copiado para o MySQL. Por exemplo, em vez de:
# Add an item to a user shopping cart
RPUSH user:<id>:cart <item>
você poderia executar:
# Add an item to a user shopping cart
MULTI
RPUSH user:<id>:cart <item>
RPUSH cart_to_mysql <id>:<item>
EXEC
O bloco MULTI/EXEC o torna atômico e consistente. Então você só precisa escrever um pequeno daemon esperando nos itens da fila cart_to_mysql (usando comandos BLPOP). Para cada item desenfileirado, o daemon precisa buscar os dados relevantes do Redis e preencher a instância do MySQL.
O Redis falha em nossos dados de armazenamento em arquivo, então é possível armazenar esses dados diretamente no banco de dados MySQL?
Não sei se entendi a pergunta aqui. Mas se você usar a solução acima, a latência entre as atualizações do Redis e as atualizações do MySQL será bastante limitada. Portanto, se o Redis falhar, você perderá apenas as últimas operações (ao contrário de uma solução baseada em tarefas cron). É claro que não é possível ter 100% de consistência na propagação de dados.