Eşzamanlılığı nasıl tanımladığınıza bağlıdır.
Sunucu tarafı yazılımında, eşzamanlılık ve paralellik genellikle farklı kavramlar olarak kabul edilir. Bir sunucuda, eşzamanlı G / Ç'leri desteklemek, sunucunun yalnızca tek bir hesaplama birimi olan istemcilere karşılık gelen çeşitli akışları yürüterek birkaç istemciye hizmet verebileceği anlamına gelir. Bu bağlamda, paralellik, sunucunun aynı anda birkaç şeyi (birden fazla hesaplama birimi ile) gerçekleştirebileceği anlamına gelir, bu da farklıdır.
Örneğin bir barmen aynı anda sadece bir içecek hazırlarken birkaç müşteriye bakabilir. Böylece paralellik olmadan eşzamanlılık sağlayabilir.
Bu soru burada tartışılmıştır:
Eşzamanlılık ve paralellik arasındaki fark nedir?
Rob Pike'ın bu sunumuna da bakınız .
Tek iş parçacıklı bir program, bir G / Ç (de) çoğullama mekanizması ve bir olay döngüsü (Redis'in yaptığı şey) kullanarak G / Ç düzeyinde eşzamanlılık sağlayabilir.
Paralellik bir maliyete sahiptir: modern donanımda bulabileceğiniz çoklu soketler / çoklu çekirdeklerle, dişler arasındaki senkronizasyon son derece pahalıdır. Öte yandan, Redis gibi verimli bir depolama motorunun tıkanıklığı genellikle CPU'dan çok önce ağdır. Bu nedenle, izole edilmiş olay döngüleri (senkronizasyon gerektirmeyen) verimli, ölçeklenebilir sunucular oluşturmak için iyi bir tasarım olarak görülür.
Redis işlemlerinin atomik olması, tek iş parçacıklı olay döngüsünün bir sonucudur. İlginç olan, atomisitenin ekstra bir ücret ödemeden sağlanmasıdır (senkronizasyon gerektirmez). Senkronizasyon yükünü ödemeden kullanıcı tarafından iyimser kilitleme ve diğer desenler uygulamak için kullanılabilir.