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 サイトの他の関連記事を参照してください。