Redis
 sql >> Teknologi Basis Data >  >> NoSQL >> Redis

Redis adalah utas tunggal, lalu bagaimana cara melakukan I/O bersamaan?

Yah itu tergantung pada bagaimana Anda mendefinisikan konkurensi.

Dalam perangkat lunak sisi server, konkurensi dan paralelisme sering dianggap sebagai konsep yang berbeda. Di server, mendukung I/Os bersamaan berarti server dapat melayani beberapa klien dengan mengeksekusi beberapa aliran yang sesuai dengan klien tersebut dengan hanya satu unit komputasi. Dalam konteks ini, paralelisme berarti server dapat melakukan beberapa hal secara bersamaan (dengan beberapa unit komputasi), yang berbeda.

Misalnya seorang bartender dapat melayani beberapa pelanggan sementara dia hanya dapat menyiapkan satu minuman dalam satu waktu. Jadi dia bisa memberikan konkurensi tanpa paralelisme.

Pertanyaan ini telah diperdebatkan di sini:Apa perbedaan antara konkurensi dan paralelisme?

Lihat juga presentasi dari Rob Pike ini.

Program single-threaded pasti dapat memberikan konkurensi di tingkat I/O dengan menggunakan mekanisme multiplexing I/O (de) dan loop peristiwa (yang dilakukan Redis).

Paralelisme memiliki biaya:dengan banyak soket/banyak inti yang dapat Anda temukan pada perangkat keras modern, sinkronisasi antar utas menjadi sangat mahal. Di sisi lain, hambatan dari mesin penyimpanan yang efisien seperti Redis sangat sering terjadi pada jaringan, jauh sebelum CPU. Oleh karena itu, loop peristiwa terisolasi (yang tidak memerlukan sinkronisasi) dipandang sebagai desain yang baik untuk membangun server yang efisien dan dapat diskalakan.

Fakta bahwa operasi Redis bersifat atomik hanyalah konsekuensi dari loop peristiwa utas tunggal. Hal yang menarik adalah atomisitas disediakan tanpa biaya tambahan (tidak memerlukan sinkronisasi). Ini dapat dimanfaatkan oleh pengguna untuk menerapkan penguncian optimis dan pola lainnya tanpa membayar biaya sinkronisasi.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Redis publish-subscribe:Apakah Redis dijamin untuk menyampaikan pesan bahkan di bawah tekanan besar?

  2. Redis - Sambungkan ke Server Jarak Jauh

  3. Redis menulis ke .ssh/authorized_keys

  4. Redis:Tampilkan ukuran/ukuran basis data untuk kunci

  5. socket.io redis dan kebocoran memori