本物のRedis - Jedisの使用は百万データ秒の挿入を達成するために

エコー、編集、転載を歓迎し、記事のソースを宣言してください。学習の交流:エコーマイクロ手紙(t2421499075マイクロ・シグナル)を追加へようこそ。バトルは、無敗勝利主張ではないによると、敗戦後の敗北は、前方に移動するのに苦労エネルギーによると、退廃的ではありません。 - これが本当の定格電力です!


我々はRedisのに大量のデータを挿入するために通常の方法を使用する場合、我々はときに私たちの挿入に非常に遅く、大量のデータになりますなぜRedisのスループット10ワット持つように、我々のデータは非常に速くRedisの広報挿入されないという主張を見つけますか?これは、本明細書の他の場所で行う記述されています

10ワットスループット質量挿入は反映されていませんか?

Redisのは10ワットスループット自慢、私たちが挿入するために通常の方法を使用して、我々は、我々は、複数の接続操作を挿入すると接続が行われている間、それは、接続を作成するために時間を要する主な理由は、そのようなデータに到達しなかったことが判明しましたパケットトランスポートネットワークの複数のパケットは、同じことを保証するものではありません。これらは私たちにデータ挿入のパフォーマンスの多くに影響を与えています。

キック第二のデータの挿入を達成するためにどのように?

使用パイプライン

次のようにコードは次のとおりです。

// 在pom依赖中添加jedis依赖
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.9.0</version>
</dependency>

// 使用jedis实现pipeline调用
public static void main(String[] args) {
    Jedis jedis = new Jedis("192.168.222.135", 6379);
    Pipeline pipeline = jedis.pipelined();
    long startTime = System.currentTimeMillis();
    IntStream.range(0, 1000000).forEach(it -> pipeline.set("batch" + it, it + ""));
    pipeline.syncAndReturnAll();
    long endTime = System.currentTimeMillis();
    System.out.println(endTime - startTime);
}

次のように挿入速度が見つかりました:

ここに画像を挿入説明

原則

パイプラインは、実際にI / O操作の多くでは、当社の事業に保存され、私たちは、操作/ O操作は、I / Oの多くの時間を節約し、I / O操作となり得るか、セット以上になります。同時に、その影響を最小限に抑えるために、当社のネットワークの問題は、I / Oデータパケット伝送います。

ご注意ください

私たちのRedisのパスワードであれば、我々はパスワードを設定するには、上記のコードの1行を追加する必要がありますので、

jedis.auth("密码");

メインブログの一番下の行であるために

おすすめ

転載: www.cnblogs.com/xlecho/p/11886881.html