まあそれはあなたが並行性をどのように定義するかに依存します。
サーバー側のソフトウェアでは、同時実行性と並列処理は異なる概念と見なされることがよくあります。サーバーで同時I / Oをサポートするということは、サーバーが複数のクライアントに対応するために、1つの計算ユニットだけでそれらのクライアントに対応する複数のフローを実行できることを意味します。このコンテキストでは、並列処理とは、サーバーが(複数の計算ユニットを使用して)同時に複数のことを実行できることを意味しますが、これは異なります。
たとえば、バーテンダーは一度に1つの飲料しか準備できない一方で、複数の顧客の世話をすることができます。そのため、並列処理なしで並行性を提供できます。
この質問はここで議論されています:
同時実行と並列処理の違いは何ですか?
Rob Pikeによるこのプレゼンテーションも参照してください。
シングルスレッドプログラムは、I / O(逆)多重化メカニズムとイベントループ(Redisが行うこと)を使用することにより、I / Oレベルでの同時実行性を確実に提供できます。
並列処理にはコストがかかります。最新のハードウェアにある複数のソケット/複数のコアを使用すると、スレッド間の同期に非常にコストがかかります。一方、Redisのような効率的なストレージエンジンのボトルネックは、多くの場合、CPUのすぐ前のネットワークです。したがって、分離されたイベントループ(同期を必要としない)は、効率的でスケーラブルなサーバーを構築するための優れた設計と見なされます。
Redisの操作がアトミックであるという事実は、単にシングルスレッドのイベントループの結果です。興味深い点は、原子性が追加コストなしで提供されることです(同期は必要ありません)。同期のオーバーヘッドを犠牲にすることなく、楽観的ロックやその他のパターンを実装するためにユーザーが利用できます。