|
|
Diposting pada 04/02/2021 13.47.27
|
|
|
|

1. Kata Pengantar
Baru-baru ini, Redis telah digunakan sebagai cache dalam proyek untuk memfasilitasi berbagi data di antara beberapa proses bisnis. Karena data Redis disimpan dalam memori, jika persistensi tidak dikonfigurasi, semua data akan hilang setelah redis dimulai ulang, jadi Anda perlu mengaktifkan fungsi persistensi redis untuk menyimpan data ke disk, dan ketika redis dimulai ulang, Anda dapat memulihkan data dari disk. Redis menyediakan dua cara untuk bertahan, persistensi RDB (prinsipnya adalah membuang catatan database Reids dalam memori ke persistensi RDB pada disk) dan yang lainnya adalah persistensi AOF (prinsipnya adalah menulis log operasi Reids ke file dalam bentuk lampiran). Jadi apa perbedaan antara kedua metode persistensi ini, dan bagaimana memilih untuk mengubahnya? Sebagian besar hal yang saya baca di Internet memperkenalkan cara mengkonfigurasi dan menggunakan kedua metode ini, tetapi tidak ada pengenalan perbedaan antara keduanya, dan dalam skenario aplikasi apa yang akan digunakan.
2. Perbedaan antara keduanya
Persistensi RDB mengacu pada penulisan rekam jepret himpunan data dalam memori ke disk dalam interval waktu tertentu, dan proses operasi yang sebenarnya adalah melakukan fork subproses, pertama-tama menulis himpunan data ke file sementara, lalu mengganti file sebelumnya setelah penulisan berhasil, dan menyimpannya dengan kompresi biner.
Persistensi AOF merekam setiap operasi tulis dan penghapusan yang diproses oleh server dalam bentuk log, dan operasi kueri tidak akan direkam, tetapi akan direkam dalam teks, dan Anda dapat membuka file untuk melihat rekaman operasi terperinci.
3. Kelebihan dan kekurangan keduanya
Apa keuntungan dari RDB?
1). Setelah ini digunakan, maka seluruh database Redis Anda hanya akan berisi satu file, yang sempurna untuk pencadangan file. Misalnya, Anda mungkin ingin mengarsipkan 24 jam terakhir setiap jam, dan juga mengarsipkan 30 hari terakhir setiap hari. Dengan strategi pencadangan seperti itu, kita dapat dengan mudah pulih jika terjadi kegagalan sistem yang dahsyat.
2). RDB adalah pilihan yang sangat baik untuk pemulihan bencana. Karena kita dapat dengan mudah mengompres satu file dan mentransfernya ke media penyimpanan lain.
3). Memaksimalkan kinerja. Untuk proses layanan Redis, satu-satunya hal yang perlu dilakukan saat memulai persistensi adalah membuang proses turunan, dan kemudian proses turunan akan menyelesaikan tugas persistensi ini, yang dapat sangat menghindari proses layanan yang melakukan operasi IO.
4). Dibandingkan dengan mekanisme AOF, jika dataset besar, efisiensi startup RDB akan lebih tinggi.
Apa kerugian dari RDB?
1). Jika Anda ingin memastikan ketersediaan data yang tinggi, yaitu menghindari kehilangan data secara maksimal, maka RDB tidak akan menjadi pilihan yang baik. Karena setelah sistem turun sebelum persistensi yang dijadwalkan, data yang sebelumnya ditulis ke disk akan hilang.
2). Karena RDB membantu dalam persistensi data melalui subproses fork, jika kumpulan data besar, dapat menyebabkan seluruh server menghentikan layanan selama ratusan milidetik, atau bahkan 1 detik.
Apa keuntungan dari AOF?
1). Mekanisme ini dapat membawa keamanan data yang lebih besar, yaitu persistensi data. Ada 3 strategi sinkronisasi yang disediakan di Redis, yaitu sinkronisasi per detik, sinkronisasi per modifikasi, dan desinkronisasi. Bahkan, sinkronisasi per detik juga dilakukan secara asinkron, dan efisiensinya juga sangat tinggi, perbedaannya adalah begitu sistem turun, maka data yang dimodifikasi akan hilang dalam detik ini. Dan setiap kali modifikasi disinkronkan, kita dapat menganggapnya sebagai persistensi sinkronisasi, yaitu setiap perubahan data yang terjadi segera direkam ke disk. Dapat diperkirakan bahwa metode ini adalah yang paling tidak efisien. Adapun tidak ada sinkronisasi, tidak perlu mengatakan lebih banyak, saya pikir semua orang dapat memahaminya dengan benar.
2). Karena mekanisme mengadopsi mode penambahan untuk menulis file log, bahkan jika ada waktu henti selama proses penulisan, konten yang sudah ada dalam file log tidak akan dihancurkan. Namun, jika kita hanya menulis setengah dari data dan sistem mogok kali ini, jangan khawatir, kita dapat menggunakan alat redis-check-aof untuk membantu kita memecahkan masalah konsistensi data sebelum dimulainya Redis berikutnya.
3). Jika log terlalu besar, Redis dapat secara otomatis mengaktifkan mekanisme penulisan ulang. Artinya, Redis terus menulis data modifikasi ke file disk lama dalam mode penambahan, dan Redis juga akan membuat file baru untuk merekam perintah modifikasi mana yang dijalankan selama periode ini. Oleh karena itu, keamanan data dapat dijamin dengan lebih baik saat beralih di antara penulisan ulang.
4). AOF berisi file log yang jelas dan mudah dipahami yang mencatat semua modifikasi. Bahkan, kita juga dapat menyelesaikan rekonstruksi data melalui file ini.
Apa kerugian dari OV?
1). Untuk jumlah kumpulan data yang sama, file OF biasanya lebih besar dari file RDB. RDB memulihkan himpunan data besar lebih cepat daripada AOF.
2). Tergantung pada strategi sinkronisasi, AOF cenderung lebih lambat daripada RDB dalam hal efisiensi berjalan. Singkatnya, efisiensi kebijakan sinkronisasi per detik relatif tinggi, dan efisiensi kebijakan penonaktifan sinkron sama efisiennya dengan RDB.
Kriteria untuk memilih keduanya adalah apakah sistem bersedia mengorbankan beberapa performa dengan imbalan konsistensi cache (AOF) yang lebih tinggi, atau apakah sistem bersedia tidak mengaktifkan pencadangan dengan imbalan performa yang lebih tinggi saat operasi penulisan sering terjadi, dan kemudian melakukan pencadangan (RDB) saat menjalankan Simpan secara manual. RDB memiliki makna konsisten yang lebih final. Namun, lingkungan produksi sebenarnya lebih merupakan kombinasi dari keduanya.
4. Konfigurasi umum
Konfigurasi persistensi RDB
Redis membuang rekam jepret himpunan data ke dalam file dump.rdb. Selain itu, kita juga dapat memodifikasi frekuensi snapshot dump server Redis melalui file konfigurasi, setelah membuka file 6379.conf, kita mencari save, dan kita dapat melihat informasi konfigurasi berikut:
Konfigurasi persisten AOF
Ada tiga cara untuk menyinkronkan di profil Redis, yaitu:
Konfigurasi lengkap:
File baru "appendonly.aof" akan dibuat di bawah direktori pengujian, sebagai berikut:
|
Mantan:DataTables mengimplementasikan ekspor tabel Excel, CSV, dan pencetakanDepan:SQL Server mengatur tingkat isolasi transaksi
|