


12 perkara penting yang sering ditanya dalam temu bual redis (dengan jawapan)
Artikel ini membawakan kepada anda ringkasan beberapa soalan yang sering ditanya semasa temu duga tentang Redis Ia meniru cara penemuduga mendalami topik Redis langkah demi langkah, dan meneliti pemahaman calon secara menyeluruh. daripada Redis saya harap ia akan membantu semua orang.
Kajian yang disyorkan: "Soalan dan jawapan temuduga redis terkini 2022 "
Soalan lazim dalam temu bual redis 12 kunci mata
Redis adalah halangan yang tidak dapat dielakkan dalam temuduga Selagi anda menulis bahawa anda telah menggunakan Redis dalam resume anda, anda pasti tidak akan dapat melarikan diri.
Xiao Zhang:
Helo, penemuduga. Saya di sini untuk temuduga.
Penemuduga:
Helo, Xiao Zhang. Saya telah membaca resume anda dan saya mahir dalam Redis, jadi saya hanya akan bertanya kepada anda beberapa soalan berkaitan Redis. Pertama sekali, soalan saya ialah, Adakah Redis benang tunggal atau berbilang benang?
Xiao Zhang:
Model benang yang digunakan dalam versi Redis yang berbeza adalah berbeza Sebelum Redis versi 4.0, model satu benang telah digunakan, dan selepas versi 4.0, ia telah digunakan. menambah sokongan Multi-threading.
Sebelum 4.0, walaupun kami mengatakan bahawa Redis adalah satu utas, ini hanya bermakna bahawa rangkaian I/O dan operasi Set dan Dapatkannya diselesaikan oleh satu utas. Walau bagaimanapun, kegigihan Redis dan penyegerakan kluster masih diselesaikan menggunakan urutan lain.
Selepas 4.0, sokongan berbilang benang telah ditambah, terutamanya ditunjukkan dalam fungsi pemadaman tak segerak bagi data besar, seperti unlink key
, flushdb async
, flushall async
, dsb.
Penemuduga :
Jawapan yang baik, Kalau begitu kenapa Redis memilih untuk menggunakan satu thread sebelum 4.0? Dan adakah ia begitu pantas menggunakan benang tunggal?
Xiao Zhang:
Saya rasa sebab utama memilih benang tunggal ialah ia mudah digunakan, tiada persaingan kunci, semua operasi boleh diselesaikan tanpa kunci, dan tiada jalan buntu atau benang Pertukaran membawa prestasi dan overhed masa, tetapi pada masa yang sama, utas tunggal tidak dapat melaksanakan sepenuhnya prestasi CPU berbilang teras.
Mengenai sebab satu utas begitu pantas, saya rasa terdapat terutamanya sebab berikut:
Kebanyakan operasi Redis diselesaikan dalam ingatan, dan kecekapan pelaksanaan dalam memori itu sendiri Ia pantas dan menggunakan struktur data yang cekap seperti jadual cincang dan jadual langkau.
Menggunakan benang tunggal mengelakkan persaingan berbilang benang, menjimatkan masa dan prestasi overhed yang disebabkan oleh penukaran berbilang benang dan tidak menyebabkan kebuntuan.
Menggunakan mekanisme pemultipleksan I/O untuk mengendalikan sejumlah besar permintaan Soket pelanggan, kerana ia berdasarkan model I/O yang tidak menyekat, yang membolehkan Redis berkomunikasi dengan cekap melalui rangkaian , proses baca dan tulis I/O tidak lagi disekat.
Penemuduga:
Ya, Bagaimanakah Redis mencapai tiada kehilangan data?
Xiao Zhang:
Data Redis disimpan dalam memori Untuk memastikan data Redis tidak hilang, adalah perlu untuk menyimpan data dari memori ke cakera supaya pelayan boleh dimulakan semula Selepas itu, data asal boleh dipulihkan daripada cakera Ini adalah kegigihan data. Terdapat tiga cara untuk mengekalkan data Redis.
Log AOF (Tambah Hanya Fail, mod tambah fail): rekod semua arahan operasi dan tambahkannya pada fail dalam bentuk teks.
Snapshot RDB (Redis DataBase): Tulis data memori pada masa tertentu ke cakera dalam bentuk binari.
Kaedah kegigihan hibrid: Redis 4.0 menambah kaedah kegigihan hibrid baharu, menyepadukan kelebihan RDB dan AOF.
Pewawancara:
Kemudian sila bincangkan tentang prinsip pelaksanaan AOF dan RDB masing-masing.
Xiao Zhang:
AOF menggunakan pengelogan pasca tulis Redis mula-mula melaksanakan arahan untuk menulis data ke dalam memori, dan kemudian merekodkan log ke fail. Log AOF merekodkan arahan operasi, bukan data sebenar Jika kaedah AOF digunakan untuk pemulihan kerosakan, keseluruhan log perlu dilaksanakan.
RDB menggunakan kaedah snapshot memori pada masa tertentu, bukan operasi Oleh itu, apabila menggunakan kaedah RDB untuk pemulihan kerosakan, anda hanya perlu terus Fail RDB boleh dibaca ke dalam memori untuk mencapai pemulihan yang cepat.
Penemuduga:
Anda baru sahaja menyebut bahawa AOF menggunakan kaedah "log pasca tulis", manakala MySQL yang biasa kami gunakan menggunakan kaedah "log pra-tulis", kemudian Mengapa adakah Redis perlu melaksanakan arahan terlebih dahulu dan kemudian menulis data ke log?
Xiao Zhang: Dahi saya mula berpeluh. Apakah soalan yang awak tanya? . .
Nah, ini adalah terutamanya kerana Redis tidak menyemak sintaks arahan sebelum menulisnya ke log, jadi ia hanya merekodkan arahan yang berjaya dilaksanakan untuk mengelakkan daripada merekodkan arahan yang salah, dan tidak mungkin untuk menulis log selepas arahan dilaksanakan Akan menyekat operasi tulis semasa.
Penemuduga:
Kemudian apakah risiko menulis diari selepas ?
Xiao Zhang:
Saya... saya tak tahu macam mana nak buat ni.
Penemuduga:
Nah, terdapat dua risiko utama yang mungkin berlaku semasa menulis log nanti:
Data mungkin hilang: Jika Redis hanya Selepas melaksanakan arahan, jika kegagalan berlaku, arahan itu mungkin hilang.
Boleh menyekat operasi lain: Log AOF sebenarnya dilaksanakan dalam utas utama, jadi apabila Redis menulis fail log ke cakera, ia masih akan menyekat operasi seterusnya dan tidak boleh dilaksanakan.
Saya ada soalan lain: Adakah RDB menyekat urutan apabila mengambil syot kilat?
Xiao Zhang:
Redis menyediakan dua arahan untuk menjana fail snapshot RDB, iaitu save dan bgsave. Perintah simpan dilaksanakan dalam utas utama dan akan menyebabkan penyekatan. Perintah bgsave akan mencipta proses kanak-kanak untuk menulis fail RDB, mengelak daripada menyekat utas utama Ini juga merupakan konfigurasi lalai RDB Redis.
Pewawancara:
RDB Bolehkah data diubah suai semasa mengambil syot kilat?
Xiao Zhang:
Simpan adalah segerak dan akan menyekat arahan pelanggan Ia boleh diubah suai semasa bgsave.
Penemuduga:
Kemudian Bagaimana Redis menyelesaikan masalah membenarkan pengubahsuaian data apabila bgsave mengambil gambar?
Xiao Zhang: (Kenapa awak masih bertanya...saya™ tidak tahu caranya!)
Um, saya tidak pasti tentang perkara ini...
Rasmi Temu Bual:
Ini terutamanya dilaksanakan menggunakan sub-benang bgsave
Operasi khusus adalah seperti berikut:
Jika utas utama melakukan operasi baca, yang. utas utama dan sub-proses bgsave
tidak akan menjejaskan satu sama lain ;
Jika utas utama melakukan operasi tulis, salinan data yang diubah suai akan dibuat, dan kemudianbgsave
proses anak. akan menulis data salinan ke fail RDB Semasa proses ini, utas utama masih boleh Mengubah suai data asal secara langsung.
Perlu diingatkan bahawa kekerapan pelaksanaan Redis pada RDB adalah sangat penting, kerana ini akan menjejaskan integriti data syot kilat dan kestabilan Redis, jadi selepas Redis 4.0 , tambahan Mekanisme kegigihan data hibrid AOF dan RDB: Tulis data ke fail dalam format RDB, dan kemudian simpan arahan operasi seterusnya dalam fail dalam format AOF, yang bukan sahaja memastikan kelajuan mula semula Redis, tetapi juga mengurangkan penggunaan data.
Xiao Zhang:
Saya mempelajarinya.
Penemuduga:
Kemudian bolehkah anda beritahu saya bagaimana Redis mencapai ketersediaan tinggi?
Xiao Zhang:
Terdapat tiga cara utama untuk mencapai ketersediaan tinggi dalam Redis: replikasi tuan-hamba, mod sentinel dan kelompok Redis.
Replikasi tuan-hamba
Segerakkan data daripada pelayan Redis sebelumnya kepada berbilang pelayan Redis hamba, iaitu model tuan-hamba, yang serupa dengan MySQL The prinsip replikasi tuan-hamba adalah sama.
Mod Sentinel
Apabila menggunakan perkhidmatan tuan-hamba Redis, akan ada masalah, iaitu apabila Redis pelayan master-slave muncul Apabila kegagalan berlaku, pemulihan manual diperlukan Untuk menyelesaikan masalah ini, Redis menambah mod sentinel (kerana mod sentinel boleh memantau pelayan induk dan hamba dan menyediakan fungsi pemulihan bencana automatik).
Redis Cluster (cluster)
Redis Cluster ialah mod operasi teragih dan terpencar, yang berasaskan Redis 3.0 The Redis penyelesaian kluster yang dilancarkan dalam versi mengedarkan data pada pelayan yang berbeza untuk mengurangkan pergantungan sistem pada satu nod induk, dengan itu meningkatkan prestasi baca dan tulis perkhidmatan Redis.
Penemu bual:
Gunakan mod sentinel untuk memastikan data mempunyai data pendua dan mempunyai pemantauan sentinel mengenai ketersediaan Setelah induk gagal, terdapat satu peluang untuk memilih hamba. Nod ialah nod induk, yang sudah memenuhi keperluan persekitaran pengeluaran kita Kemudian mengapa kita masih perlu menggunakan mod kluster?
Xiao Zhang:
Nah, mod sentinel masih merupakan nod induk-hamba dalam mod induk-hamba, kita boleh mengembangkan keupayaan konkurensi baca dengan menambahkan nod salve. tetapi tidak ada cara untuk mengembangkan kapasiti penulisan dan kapasiti storan, kapasiti storan hanya boleh menjadi had atas yang boleh dibawa oleh nod induk. Oleh itu, untuk mengembangkan keupayaan menulis dan keupayaan storan, kami perlu memperkenalkan mod kluster.
Penemu bual:
Terdapat begitu banyak nod Induk dalam gugusan, bagaimanakah gugusan redis menentukan nod yang hendak dipilih semasa menyimpan?
Xiao Zhang:
Ini sepatutnya menggunakan beberapa jenis algoritma cincang, tetapi saya tidak pasti. . .
Penemuduga:
Baiklah, itu sahaja untuk temu duga hari ini anda kembali dan tunggu pemberitahuan temu duga kami.
Xiao Zhang:
Baiklah, terima kasih penemu duga, bolehkah anda beritahu saya cara gugusan redis melaksanakan pemilihan nod?
Penemuduga:
Redis Cluster menggunakan algoritma pencincangan konsisten kelas untuk melaksanakan pemilihan nod Mengenai algoritma pencincangan yang konsisten, anda boleh kembali dan lihat sendiri .
Redis Cluster membahagikan dirinya kepada 16384 Slots adalah serupa dengan partition data Setiap pasangan nilai kunci akan dipetakan kepada slot cincangan mengikut pelaksanaan khusus Proses ini dibahagikan kepada dua langkah utama.
Kira nilai 16-bit berdasarkan kunci pasangan nilai kunci mengikut algoritma CRC16.
Kemudian gunakan nilai 16bit untuk modulo 16384 untuk mendapatkan modulus dalam julat 0~16383 Setiap modulus mewakili slot cincang dengan nombor yang sepadan.
Setiap nod Redis bertanggungjawab untuk memproses sebahagian daripada slot Jika anda mempunyai tiga nod induk ABC, slot setiap nod bertanggungjawab adalah seperti berikut:
Dengan cara ini, pemilihan nod kluster direalisasikan.
Pembelajaran yang disyorkan: "Tutorial video Redis", "soalan dan jawapan temu bual redis terkini 2022"
Atas ialah kandungan terperinci 12 perkara penting yang sering ditanya dalam temu bual redis (dengan jawapan). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Mod Redis cluster menyebarkan contoh Redis ke pelbagai pelayan melalui sharding, meningkatkan skalabilitas dan ketersediaan. Langkah -langkah pembinaan adalah seperti berikut: Buat contoh Redis ganjil dengan pelabuhan yang berbeza; Buat 3 contoh sentinel, memantau contoh redis dan failover; Konfigurasi fail konfigurasi sentinel, tambahkan pemantauan maklumat contoh dan tetapan failover; Konfigurasi fail konfigurasi contoh Redis, aktifkan mod kluster dan tentukan laluan fail maklumat kluster; Buat fail nodes.conf, yang mengandungi maklumat setiap contoh Redis; Mulakan kluster, laksanakan perintah Buat untuk membuat kluster dan tentukan bilangan replika; Log masuk ke kluster untuk melaksanakan perintah maklumat kluster untuk mengesahkan status kluster; buat

Menggunakan Arahan Redis memerlukan langkah -langkah berikut: Buka klien Redis. Masukkan arahan (nilai kunci kata kerja). Menyediakan parameter yang diperlukan (berbeza dari arahan ke arahan). Tekan Enter untuk melaksanakan arahan. Redis mengembalikan tindak balas yang menunjukkan hasil operasi (biasanya OK atau -r).

Langkah -langkah untuk memulakan pelayan Redis termasuk: Pasang Redis mengikut sistem operasi. Mulakan perkhidmatan Redis melalui Redis-server (Linux/macOS) atau redis-server.exe (Windows). Gunakan redis-cli ping (linux/macOS) atau redis-cli.exe ping (windows) perintah untuk memeriksa status perkhidmatan. Gunakan klien Redis, seperti redis-cli, python, atau node.js untuk mengakses pelayan.

Redis menggunakan jadual hash untuk menyimpan data dan menyokong struktur data seperti rentetan, senarai, jadual hash, koleksi dan koleksi yang diperintahkan. Redis berterusan data melalui snapshots (RDB) dan menambah mekanisme tulis sahaja (AOF). Redis menggunakan replikasi master-hamba untuk meningkatkan ketersediaan data. Redis menggunakan gelung acara tunggal untuk mengendalikan sambungan dan arahan untuk memastikan atom dan konsistensi data. Redis menetapkan masa tamat tempoh untuk kunci dan menggunakan mekanisme memadam malas untuk memadamkan kunci tamat tempoh.

Untuk membaca giliran dari Redis, anda perlu mendapatkan nama giliran, membaca unsur -unsur menggunakan arahan LPOP, dan memproses barisan kosong. Langkah-langkah khusus adalah seperti berikut: Dapatkan nama giliran: Namakannya dengan awalan "giliran:" seperti "giliran: my-queue". Gunakan arahan LPOP: Keluarkan elemen dari kepala barisan dan kembalikan nilainya, seperti LPOP Queue: My-Queue. Memproses Baris kosong: Jika barisan kosong, LPOP mengembalikan nihil, dan anda boleh menyemak sama ada barisan wujud sebelum membaca elemen.

Cara terbaik untuk memahami kod sumber REDIS adalah dengan langkah demi langkah: Dapatkan akrab dengan asas -asas Redis. Pilih modul atau fungsi tertentu sebagai titik permulaan. Mulakan dengan titik masuk modul atau fungsi dan lihat baris kod mengikut baris. Lihat kod melalui rantaian panggilan fungsi. Berhati -hati dengan struktur data asas yang digunakan oleh REDIS. Kenal pasti algoritma yang digunakan oleh Redis.

Menggunakan REDIS untuk mengunci operasi memerlukan mendapatkan kunci melalui arahan SETNX, dan kemudian menggunakan perintah luput untuk menetapkan masa tamat tempoh. Langkah-langkah khusus adalah: (1) Gunakan arahan SETNX untuk cuba menetapkan pasangan nilai utama; (2) Gunakan perintah luput untuk menetapkan masa tamat tempoh untuk kunci; (3) Gunakan perintah DEL untuk memadam kunci apabila kunci tidak lagi diperlukan.

Cara Mengosongkan Data Redis: Gunakan perintah Flushall untuk membersihkan semua nilai utama. Gunakan perintah flushdb untuk membersihkan nilai utama pangkalan data yang dipilih sekarang. Gunakan Pilih untuk menukar pangkalan data, dan kemudian gunakan FlushDB untuk membersihkan pelbagai pangkalan data. Gunakan perintah DEL untuk memadam kunci tertentu. Gunakan alat REDIS-CLI untuk membersihkan data.
