informasi kontak saya
Surat[email protected]
2024-07-11
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Untuk membantu semua orang dalam perjalanan wawancara, bagi siswa yang masih ragu tentang Redis, kami telah mengumpulkan 40 pertanyaan wawancara umum Redis sehingga Anda tidak perlu panik selama wawancara dan berusaha untuk mendapatkan tawaran tersebut!
1. Apa itu Redis?
Redis sepenuhnya open source dan gratis, mematuhi protokol BSD, dan merupakan database nilai kunci berkinerja tinggi.
Redis memiliki tiga karakteristik berikut dibandingkan dengan produk cache nilai kunci lainnya:
Redis mendukung persistensi data. Redis dapat menyimpan data di memori ke disk dan memuatnya kembali untuk digunakan saat memulai ulang.
Redis tidak hanya mendukung data tipe nilai kunci sederhana, tetapi juga menyediakan penyimpanan struktur data seperti daftar, set, zset, dan hash.
Redis mendukung pencadangan data, yaitu pencadangan data dalam mode master-slave.
Keunggulan Redis:
Performa sangat tinggi: Redis dapat membaca dengan kecepatan 110.000 kali/detik dan menulis dengan kecepatan 81.000 kali/detik.
Tipe data yang kaya: Redis mendukung operasi tipe data Strings, Lists, Hashes, Sets dan Ordered Sets dalam kasus biner.
Atomic: Semua operasi di Redis bersifat atomik, artinya operasi tersebut berhasil dijalankan atau tidak dijalankan sama sekali. Operasi individual bersifat atomik. Beberapa operasi juga mendukung transaksi, yaitu atomisitas, yang dibungkus dengan instruksi MULTI dan EXEC.
Fitur yang kaya: Redis juga mendukung publikasi/berlangganan, notifikasi, masa berlaku kunci, dan fitur lainnya.
Apa perbedaan Redis dengan penyimpanan nilai kunci lainnya?
Redis memiliki struktur data yang lebih kompleks dan menyediakan operasi atom pada struktur tersebut. Ini adalah jalur evolusi yang berbeda dari database lainnya. Tipe data Redis didasarkan pada struktur data dasar dan transparan bagi pemrogram, tanpa memerlukan abstraksi tambahan.
Redis berjalan di memori tetapi dapat disimpan di disk, jadi ada trade-off memori saat melakukan pembacaan dan penulisan kumpulan data berbeda dengan kecepatan tinggi, karena jumlah data tidak boleh lebih besar dari memori perangkat keras. Keuntungan lain dari database dalam memori adalah dibandingkan dengan struktur data kompleks yang sama di disk, pengoperasian di memori sangatlah sederhana, sehingga Redis dapat melakukan banyak hal dengan kompleksitas internal yang kuat. Selain itu, dalam hal format disk, mereka kompak dan dihasilkan tambahan karena tidak memerlukan akses acak.
2. Apa saja tipe data Redis?
Redis mendukung lima tipe data: string (string), hash (hash), daftar (daftar), set (set) dan zsetsorted set (set terurut).
Yang lebih umum digunakan dalam proyek kami sebenarnya adalah string dan hash. Jika Anda adalah pengguna Redis tingkat menengah dan lanjutan, Anda juga perlu menambahkan struktur data berikut HyperLogLog, Geo, dan Pub/Sub.
Jika Anda mengatakan bahwa Anda juga pernah bermain dengan Modul Redis, seperti BloomFilter, RedisSearch, dan Redis-ML, mata pewawancara akan mulai bersinar.
3. Apa keuntungan menggunakan Redis?
Cepat karena data disimpan dalam memori, mirip dengan HashMap. Keuntungan HashMap adalah kompleksitas waktu pencarian dan pengoperasian adalah O1)
Mendukung tipe data yang kaya, termasuk string, daftar, set, Zset, hash, dll.
Mendukung transaksi, dan operasi semuanya bersifat atomik. Yang disebut atomisitas berarti bahwa semua perubahan pada data dijalankan atau tidak dijalankan sama sekali.
Fitur yang kaya, dapat digunakan untuk caching, pengiriman pesan, mengatur waktu kedaluwarsa dengan kunci, akan dihapus secara otomatis setelah kedaluwarsa
4. Apa kelebihan Redis dibandingkan Memcached?
Semua nilai di Memcached adalah string sederhana, dan Redis, sebagai penggantinya, mendukung kelas data yang lebih kaya.
Redis jauh lebih cepat daripada Memcached
Redis dapat mempertahankan datanya
5. Apa perbedaan antara Memcache dan Redis?
Metode penyimpanan Memecache menyimpan semua data di memori. Ini akan terhenti setelah listrik mati. Redis sebagian disimpan di hard disk, yang menjamin ketahanan data.
Tipe dukungan data Dukungan Memcache untuk tipe data relatif sederhana. Redis memiliki tipe data yang kompleks.
Model dasar yang digunakan berbeda dalam metode implementasi yang mendasarinya dan protokol aplikasi untuk komunikasi dengan klien. Redis langsung membangun mekanisme VMnya sendiri, karena jika sistem umum memanggil fungsi sistem, maka akan membuang sejumlah waktu untuk memindahkan dan meminta.
6. Apakah Redis berproses tunggal dan berulir tunggal?
Redis adalah proses tunggal dan thread tunggal. Redis menggunakan teknologi antrian untuk mengubah akses bersamaan menjadi akses serial, menghilangkan overhead kontrol serial database tradisional.
7. Berapa kapasitas maksimum penyimpanan pintar tipe string?
512 juta.
8. Bagaimana mekanisme persistensi Redis? Apa kelebihan dan kekurangan masing-masing?
Redis menyediakan dua mekanisme persistensi, mekanisme RDB dan AOF:
Metode persistensi RDB (Redis DataBase): mengacu pada pencatatan semua pasangan nilai kunci database Redis dalam mode semi-persisten menggunakan snapshot kumpulan data, dan menulis data ke file sementara pada titik waktu tertentu setelah persistensi selesai, gunakan ini File sementara menggantikan file terakhir yang bertahan untuk mencapai pemulihan data.
keuntungan:
Hanya ada satu file dump.rdb, yang nyaman untuk persistensi.
Toleransi bencana baik, file dapat disimpan ke disk yang aman.
Untuk memaksimalkan performa, fork proses anak untuk menyelesaikan operasi penulisan dan izinkan proses utama untuk terus memproses perintah, sehingga IO dimaksimalkan. Gunakan sub-proses terpisah untuk persistensi, dan proses utama tidak akan melakukan operasi IO apa pun, sehingga memastikan kinerja tinggi Redis.
Ketika kumpulan datanya besar, efisiensi permulaannya lebih tinggi daripada AOF.
Kekurangan: keamanan data rendah. RDB dipertahankan pada interval waktu tertentu. Jika Redis gagal selama persistensi, kehilangan data akan terjadi.Oleh karena itu, metode ini lebih cocok bila persyaratan datanya tidak ketat.
Metode persistensi AOF (file khusus tambahan): berarti bahwa semua catatan baris perintah disimpan sepenuhnya secara persisten dan disimpan sebagai file aof dalam format protokol permintaan perintah Redis.
keuntungan:
Untuk keamanan data, persistensi AOF dapat dikonfigurasi dengan atribut appendfsync. Jika selalu ada, setiap operasi perintah akan dicatat dalam file AOF.
Dengan menulis file dalam mode penambahan, meskipun server down di tengah-tengah, masalah konsistensi data dapat diselesaikan melalui alat redis-check-aof.
Mode penulisan ulang mekanisme AOF. Sebelum file AOF ditulis ulang (perintah akan digabungkan dan ditulis ulang ketika file terlalu besar), Anda dapat menghapus beberapa perintah (seperti flushall yang tidak sengaja dioperasikan).
kekurangan:
File AOF lebih besar dari file RDB dan lebih lambat untuk dipulihkan.
Jika kumpulan datanya besar, efisiensi permulaannya lebih rendah dibandingkan RDB.
9. Redis masalah kinerja umum dan solusinya
Master sebaiknya tidak menulis snapshot memori. Jika Master menulis snapshot memori, perintah simpan menjadwalkan fungsi rdbSave, yang akan memblokir pekerjaan thread utama. Ketika snapshot relatif besar, dampaknya terhadap kinerja akan sangat besar, dan layanan akan ditangguhkan sewaktu-waktu.
Jika datanya penting, Slave mengaktifkan data cadangan AOF, dan kebijakan diatur untuk menyinkronkan satu data per detik.
Untuk kecepatan replikasi master-slave dan stabilitas koneksi, sebaiknya Master dan Slave berada di LAN yang sama.
Cobalah untuk menghindari penambahan budak ke database master yang tertekan.
Jangan gunakan struktur grafik untuk replikasi master-slave. Lebih stabil menggunakan struktur daftar tertaut satu arah, yaitu: Master