1. Redis はなぜシングルスレッドなのでしょうか?
Redis はメモリベースの操作であるため、CPU が Redis のボトルネックになることはありません。Redis のボトルネックは、マシンのメモリまたはネットワーク帯域幅のサイズである可能性が高くなります。シングルスレッドは実装が簡単で、CPU がボトルネックにならないため、シングルスレッド ソリューションを採用するのは合理的です。
2. 詳細な理由:
1. さまざまなロックによるパフォーマンスの消費が不要です
Redis のデータ構造は単純な Key-Value だけではなく、ハッシュなどの複雑な構造は、長いリストの後に要素を追加したり、ハッシュにオブジェクトを追加または削除したりするなど、非常にきめの細かい操作を実行できます。これらの操作では大量のロックの追加が必要になる場合があり、その結果、同期オーバーヘッドが大幅に増加します。
つまり、シングル スレッドの場合は、さまざまなロックの問題を考慮する必要がなく、ロック操作やロック解除操作がなく、デッドロックの可能性によるパフォーマンスの消費もありません。
2. シングルスレッド マルチプロセス クラスター ソリューション
シングルスレッドの能力は実際には非常に強力であり、各コアの効率も非常に高いです。シングル スレッドよりも高いパフォーマンス制限がありますが、今日のコンピューティング環境では、単一マシンのマルチスレッドの上限でもニーズを満たすことができないことがよくあります。さらに検討する必要があるのは、マルチサーバー クラスタリング ソリューションです。スレッド技術はまだ利用できません。
3. CPU 消費
不要なコンテキスト切り替えや競合状態を避けるためにシングル スレッドを使用し、マルチプロセスやマルチスレッドによる切り替えによる CPU 消費はありません。
しかし、CPU が Redis のボトルネックになった場合、またはサーバーの他の CPU コアをアイドル状態にしたくない場合はどうすればよいでしょうか?
さらにいくつかの Redis プロセスを開始することを検討できます。Redis はリレーショナル データベースではなくキーと値のデータベースであり、データ間に制約はありません。どのキーがどの Redis プロセスに配置されているかをクライアントが区別できれば問題ありません。
3. Redis シングル スレッドの長所と短所
1. シングル プロセスおよびシングル スレッドの利点
コードがより明確になり、処理ロジックがよりシンプルになりました
考慮する必要はありません。さまざまなロック問題に対するロックと解放の操作がありません。また、デッドロックの可能性によるパフォーマンスの消費もありません。
マルチプロセスや複数のプロセスによる切り替えによる CPU の消費もありません。マルチスレッド
2. シングルプロセスおよびシングルスレッドの欠点
マルチコア CPU のパフォーマンスを最大限に活用することはできませんが、複数の Redis インスタンスを 1 つのサーバー上で開くことで改善できます。単一マシン;
Redis 関連の知識の詳細については、
Redis チュートリアル以上がRedis がシングルスレッドなのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。