Rumah > pangkalan data > Redis > teks badan

Apakah aof dan rdb dalam redis? Apakah perbezaannya?

藏色散人
Lepaskan: 2021-09-24 17:55:03
ke hadapan
4613 orang telah melayarinya

Kegigihan AOF dan RDB redis

1 Perbezaan antara RDB AOF

Kegigihan RDB merujuk kepada menulis petikan set data dalam ingatan dalam selang masa yang ditentukan Dalam. cakera, buat proses anak dan mula-mula tulis set data ke dalam fail sementara Selepas penulisan berjaya, fail sebelumnya diganti dan disimpan menggunakan pemampatan binari.

Kendalian khusus: melintasi jadual cincang, gunakan salinan semasa menulis dan simpan keseluruhan pembuangan db.
arahan simpan, tutup, hamba akan mencetuskan operasi ini.
Ciri-ciri: Butirannya agak besar Jika save, shutdown, slave ranap sebelum ini, operasi perantaraan tidak boleh dipulihkan.

Kegigihan AOF merekodkan setiap operasi tulis dan padam yang diproses oleh pelayan dalam bentuk log Operasi pertanyaan tidak direkodkan, tetapi direkodkan dalam teks. Anda boleh membuka fail untuk melihat rekod operasi terperinci. Redis juga boleh menulis semula fail AOF di latar belakang supaya saiz fail AOF tidak melebihi saiz sebenar yang diperlukan untuk menyimpan keadaan set data. Redis juga boleh menggunakan kegigihan AOF dan kegigihan RDB pada masa yang sama. Dalam kes ini, apabila Redis dimulakan semula, ia akan memberi keutamaan untuk menggunakan fail AOF untuk memulihkan set data, kerana set data yang disimpan oleh fail AOF biasanya lebih lengkap daripada set data yang disimpan oleh fail RDB. Anda juga boleh mematikan kegigihan supaya data hanya wujud semasa pelayan sedang berjalan.

Ciri: Butirannya kecil Selepas ranap sistem, hanya operasi yang tidak sempat log sebelum ranap tidak boleh dipulihkan.

Kriteria pemilihan adalah untuk melihat sama ada sistem sanggup mengorbankan beberapa prestasi sebagai pertukaran untuk konsistensi cache yang lebih tinggi (aof), atau sama ada ia bersedia untuk tidak mendayakan sandaran sebagai pertukaran untuk prestasi yang lebih tinggi apabila operasi tulis kerap dilakukan . Ia akan secara manual Apabila menjalankan simpan, buat sandaran (rdb). RDB mempunyai makna yang lebih konsisten.

2. Kelebihan dan kekurangan AOF RDB

AOF:

Kelebihan: Menggunakan kegigihan AOF akan menjadikan Redis lebih tahan lama: anda boleh menetapkan dasar fsync yang berbeza, seperti tiada fsync , fsync sekali sesaat, atau fsync setiap kali arahan tulis dilaksanakan. Dasar lalai AOF adalah untuk menyegerakkan sekali sesaat Di bawah konfigurasi ini, Redis masih boleh mengekalkan prestasi yang baik, dan walaupun kegagalan berlaku, hanya satu saat data akan hilang paling banyak (fsync akan dilaksanakan dalam urutan latar belakang. jadi Benang utama boleh terus bekerja keras memproses permintaan arahan). Fail AOF ialah fail log yang hanya menjalankan operasi tambah (tambah log sahaja), jadi menulis ke fail AOF tidak memerlukan pencarian, walaupun log mengandungi arahan yang tidak lengkap atas sebab tertentu (seperti semasa menulis ke cakera penuh, penulisan dihentikan di tengah jalan, dsb.), alat redis-check-aof juga boleh menyelesaikan masalah ini dengan mudah.
Redis boleh menulis semula AOF secara automatik di latar belakang apabila saiz fail AOF menjadi terlalu besar: fail AOF baharu selepas menulis semula mengandungi set perintah minimum yang diperlukan untuk memulihkan set data semasa. Keseluruhan operasi penulisan semula adalah benar-benar selamat, kerana Redis akan terus menambahkan arahan pada fail AOF sedia ada semasa proses mencipta fail AOF baharu Walaupun terdapat penutupan semasa proses penulisan semula, fail AOF sedia ada tidak akan hilang. . Setelah fail AOF baharu dibuat, Redis akan bertukar daripada fail AOF lama kepada fail AOF baharu dan mula melampirkan fail AOF baharu. Fail AOF menyimpan semua operasi tulis yang dilakukan pada pangkalan data dengan cara yang teratur Operasi tulis ini disimpan dalam format protokol Redis Oleh itu, kandungan fail AOF sangat mudah dibaca dan mudah untuk menganalisis fail (menghuraikan). Mengeksport (mengeksport) fail AOF juga sangat mudah: contohnya, jika anda secara tidak sengaja melaksanakan arahan FLUSHALL, tetapi selagi fail AOF belum ditimpa, maka hentikan sahaja pelayan, alih keluar arahan FLUSHALL di penghujung AOF fail, dan mulakan semula Redis Anda boleh memulihkan set data kepada keadaan sebelum FLUSHALL dilaksanakan.

Kelemahan:
Untuk set data yang sama, saiz fail AOF biasanya lebih besar daripada saiz fail RDB. AOF mungkin lebih perlahan daripada RDB bergantung pada strategi fsync yang digunakan. Dalam keadaan biasa, prestasi fsync sesaat masih sangat tinggi, dan mematikan fsync boleh menjadikan AOF sepantas RDB, walaupun di bawah beban tinggi. Walau bagaimanapun, RDB boleh memberikan kependaman maksimum yang lebih terjamin apabila mengendalikan beban tulis yang besar. AOF mempunyai pepijat sedemikian pada masa lalu: disebabkan oleh arahan individu, apabila fail AOF dimuat semula, set data tidak boleh dipulihkan kepada keadaan asal apabila ia disimpan. (Sebagai contoh, arahan menyekat BRPOPLPUSH pernah menyebabkan pepijat sedemikian.) Ujian telah ditambahkan pada suite ujian untuk situasi ini: mereka menjana set data rawak dan kompleks secara automatik dan memuatkan semula data ini untuk memastikan semuanya normal. Walaupun pepijat jenis ini tidak biasa dalam fail AOF, secara perbandingan, hampir mustahil untuk RDB mempunyai pepijat jenis ini.

Kelebihan RDB:
RDB ialah fail yang sangat padat yang menyimpan set data Redis pada masa tertentu. Fail jenis ini sangat sesuai untuk sandaran: contohnya, anda boleh menyandarkan fail RDB setiap jam dalam 24 jam terakhir, dan juga menyandarkan fail RDB setiap hari dalam bulan tersebut. Dengan cara ini, walaupun anda menghadapi masalah, anda sentiasa boleh memulihkan set data kepada versi yang berbeza. RDB bagus untuk pemulihan bencana: ia hanya mempunyai satu fail, dan kandungannya sangat padat, dan ia boleh dipindahkan (selepas penyulitan) ke pusat data lain, atau ke Amazon S3. RDB boleh memaksimumkan prestasi Redis: satu-satunya perkara yang perlu dilakukan oleh proses induk semasa menyimpan fail RDB ialah menghentikan proses anak, dan kemudian proses anak akan mengendalikan semua kerja penjimatan berikutnya, dan proses induk tidak perlu melakukan sebarang operasi I/O cakera . RDB lebih pantas daripada AOF apabila memulihkan set data yang besar.

Kelemahan:
Jika anda perlu mengelak daripada kehilangan data apabila pelayan gagal, maka RDB tidak sesuai untuk anda. Walaupun Redis membenarkan anda menetapkan titik simpan yang berbeza untuk mengawal kekerapan menyimpan fail RDB, ia bukanlah satu operasi yang mudah kerana fail RDB perlu menyimpan keadaan keseluruhan set data. Oleh itu anda boleh menyimpan fail RDB sekurang-kurangnya sekali setiap 5 minit. Dalam kes ini, sekiranya berlaku gangguan, anda mungkin kehilangan beberapa minit data. Setiap kali RDB disimpan, Redis mesti fork() proses anak dan proses anak akan melaksanakan kerja kegigihan sebenar. Apabila set data besar, fork() mungkin sangat memakan masa, menyebabkan pelayan berhenti memproses klien dalam milisaat tertentu jika set data sangat besar dan masa CPU sangat ketat, maka masa berhenti ini mungkin malah lebih lama. Walaupun penulisan semula AOF juga memerlukan fork(), tidak kira berapa lama selang pelaksanaan penulisan semula AOF, tidak akan ada kerugian dalam ketahanan data.

Pembelajaran yang disyorkan: "tutorial video redis"

Atas ialah kandungan terperinci Apakah aof dan rdb dalam redis? Apakah perbezaannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:segmentfault.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan