ホームページ  >  記事  >  データベース  >  ジェダイとレッドテンプレートの違い

ジェダイとレッドテンプレートの違い

(*-*)浩
(*-*)浩オリジナル
2019-11-22 14:46:018472ブラウズ

ジェダイとレッドテンプレートの違い

Jedis は、Redis を操作するために公式に推奨される Java 指向のクライアントであり、RedisTemplate は SpringDataRedis の JedisApi の高レベルのカプセル化です。

ネイティブ jedis と Spring の redisTemplate を使用して接続プールを呼び出すと、大きな違いが見つかりました: (推奨学習: Redis ビデオ チュートリアル )

redis 構成:

  redis:
    database: 0
    host: 127.0.0.1
    port: 6379
    password: 123456
    timeout: 5000
    lettuce:
      shutdown-timeout: 200
      pool:
        max-active: 500
        max-idle: 100
        min-idle: 50
        max-wait: 2000

jedis 単体テスト:

  public void testJedis() throws IOException {
    GreExam greExam = new GreExam();
    greExam.setId(997);
    String greExamStr = JacksonUtil.bean2Json(greExam);
 
    long time = 0;
    for (int i = 0; i < 100; i++) {
      try (Jedis jedis = jedisPool.getResource()) {
        // 1、推送
        long time1 = System.currentTimeMillis();
        jedis.lpush("jedis-mq", greExamStr);
        // 2、接收
        String msg = jedis.brpoplpush("jedis-mq", "jedis-mq_bak", 0);
        jedis.lrem("jedis-mq_bak", 1, msg);
        long time2 = System.currentTimeMillis();
        time += time2 - time1;
      } catch (Exception e) {
        e.printStackTrace();
      }
    }
    System.out.println("总时间:" + time);
  }

redisTemplate 単体テスト:

  public void testRedisTemplate() throws IOException {
    GreExam greExam = new GreExam();
    greExam.setId(997);
    String greExamStr = JacksonUtil.bean2Json(greExam);
    long time = 0;
    for (int i = 0; i < 100; i++) {
      // 1、推送
      long time1 = System.currentTimeMillis();
      redisTemplate.opsForList().leftPush("redisTemplate-mq", greExamStr);
      // 2、接收
      String msg = (String) redisTemplate.opsForList().rightPopAndLeftPush(
          "redisTemplate-mq", "redisTemplate-mq_bak", 1, TimeUnit.SECONDS);
      redisTemplate.opsForList().remove("redisTemplate-mq_bak", 1, msg);
      long time2 = System.currentTimeMillis();
      time += time2 - time1;
    }
    System.out.println("总时间:" + time);
  }

適時性の比較:

ジェダイとレッドテンプレートの違い結論: ネイティブ jedis の効率は redisTemplate よりも優れています。さらに、テストでは 100 個のリクエストが使用され、毎回ビジネス操作が実行されていないことがわかりました。実行速度は非常に高速でした。Redis は少数の接続のみを維持しました。しかし、独自のビジネス処理を追加したり、数秒間スリープしたりすると、 、redis が維持し続けていることがわかります。接続プールは 50 の接続用に構成されています。

これは単一スレッドであるため、最後の jedis 実行が完了した後、閉じられていないように見えます。次の呼び出しではアイドル接続が割り当てられず、最小数に達するまで新しい接続が開かれます。接続が飽和状態になると、空のアイドル接続が次の接続に割り当てられます (新しい呼び出しが行われたときに、前の接続が完全にアイドル状態であるため、新しい接続が開かれないように、単一のスレッドが保証する必要があるのは当然です)。具体的な理由はまだ不明ですが、スレッド プールの原理に関連している可能性があります。

Redis 関連の技術記事の詳細については、「Redis データベース チュートリアルの使用方法の概要」 列にアクセスして学習してください。

以上がジェダイとレッドテンプレートの違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。