sql >> データベース >  >> NoSQL >> Redis

マルチコアCPUでのRedisのパフォーマンス

    redisのWebサイトを調べたところ、redisはマルチコアCPU用に設計されていないことがわかりました。私の質問は、なぜそうなのかということです。

    これは設計上の決定です。

    Redisはepoll/kqueueでシングルスレッド化されており、I/Oの同時実行性に関して無期限にスケーリングします。 [email protected](Redisの作成者)

    イベントドリブンアプローチを選択する理由は、同期であるためです。 スレッド間では、ソフトウェア(コードの複雑さ)とハードウェアレベル(コンテキストスイッチング)の両方でコストがかかります。これに加えて、Redisのボトルネックは通常ネットワークです。 、CPUではありません。一方、シングルスレッドアーキテクチャには独自の利点があります(たとえば、アトミック性の保証)。

    したがって、イベントループは、効率的なための優れた設計のように見えます。 &スケーラブル Redisのようなシステム。

    また、そうであれば、マルチコアCPUでCPUリソースを100%使用する方法を教えてください。

    複数のコアに拡張するためのRedisのアプローチは、シャーディングです。 、主にTwemproxyと一緒に。

    ただし、何らかの理由でマルチスレッドアプローチを使用したい場合は、Thredisを確認しますが、作成者が行ったことの意味を理解してください(たとえば、レプリケーションマスターとして使用することはできません)。



    1. Double NestedArrayMongoDBで検索

    2. DjangoでGraphQLを使用してMongoDBからデータをクエリする:Get-Go(1)

    3. SocketException:アドレスはすでに使用されていますMONGODB

    4. バインドパラメータはRedisで何をしますか?