Apakah ada cara lain untuk membuang data besar dari Redis ke MySQL?
Redis memiliki kemungkinan (menggunakan bgsave) untuk menghasilkan dump data dengan cara yang tidak memblokir dan konsisten.
https://github.com/sripathikrishnan/redis-rdb-tools
Anda dapat menggunakan paket terkenal Sripathi Krishnan untuk mengurai file dump redis (RDB) dengan Python, dan mengisi instance MySQL secara offline. Atau Anda dapat mengonversi dump Redis ke format JSON, dan menulis skrip dalam bahasa apa pun yang Anda inginkan untuk mengisi MySQL.
Solusi ini hanya menarik jika Anda ingin menyalin data lengkap dari instance Redis ke MySQL.
Apakah Redis memiliki sistem pemicu yang dapat saya gunakan untuk menghindari sistem antrian seperti cron?
Redis tidak memiliki konsep pemicu, tetapi tidak ada yang mencegah Anda untuk memposting acara di antrian Redis setiap kali sesuatu harus disalin ke MySQL. Misalnya, alih-alih:
# Add an item to a user shopping cart
RPUSH user:<id>:cart <item>
Anda dapat menjalankan:
# Add an item to a user shopping cart
MULTI
RPUSH user:<id>:cart <item>
RPUSH cart_to_mysql <id>:<item>
EXEC
Blok MULTI/EXEC membuatnya atomik dan konsisten. Kemudian Anda hanya perlu menulis sedikit daemon yang menunggu item dari antrian cart_to_mysql (menggunakan perintah BLPOP). Untuk setiap item dequeued, daemon harus mengambil data yang relevan dari Redis, dan mengisi instance MySQL.
Redis gagal menyimpan data kami dalam file, jadi apakah mungkin menyimpan data itu langsung ke database MySQL?
Saya tidak yakin saya mengerti pertanyaan di sini. Tetapi jika Anda menggunakan solusi di atas, latensi antara pembaruan Redis dan pembaruan MySQL akan sangat terbatas. Jadi jika Redis gagal, Anda hanya akan kehilangan operasi terakhir (bertentangan dengan solusi berdasarkan pekerjaan cron). Tentu saja tidak mungkin untuk memiliki konsistensi 100% dalam penyebaran data.