TL;DR :Utas tunggal membuat redis lebih sederhana, dan redis masih terikat IO.
Memori adalah I/O. Redis masih terikat I/O. Ketika redis berada di bawah beban berat dan mencapai permintaan maksimum per detik, biasanya redis kekurangan bandwidth jaringan atau bandwidth memori, dan biasanya tidak menggunakan banyak CPU. Ada perintah tertentu yang tidak benar, tetapi untuk sebagian besar kasus penggunaan redis akan sangat terikat I/O oleh jaringan atau memori.
Kecuali jika memori dan kecepatan jaringan tiba-tiba mendapatkan urutan besarnya lebih cepat, menjadi utas tunggal biasanya tidak menjadi masalah. Jika Anda perlu menskalakan lebih dari satu atau beberapa utas (yaitu:master<->slave<->slave setup), Anda sudah melihat Redis Cluster. Dalam hal ini, Anda dapat menyiapkan instance cluster per inti CPU jika Anda entah bagaimana kekurangan CPU dan ingin memaksimalkan jumlah utas.
Saya tidak begitu akrab dengan sumber redis atau internal, tetapi saya dapat melihat bagaimana menggunakan satu utas memudahkan penerapan tindakan atom tanpa kunci. Utas akan membuat ini lebih kompleks dan tampaknya tidak menawarkan keuntungan besar karena redis tidak terikat CPU. Menerapkan konkurensi pada tingkat di atas instance redis tampaknya merupakan solusi yang baik, dan itulah yang dibantu oleh Redis Sentinel dan Redis Cluster.
Apa yang terjadi pada permintaan lain ketika redis membutuhkan waktu lama?
Permintaan lain tersebut akan diblokir saat redis menyelesaikan permintaan panjang. Jika perlu, Anda dapat mengujinya menggunakan client-pause
perintah.