Jedis는 Redis 운영을 위해 공식적으로 권장되는 Java 기반 클라이언트이며 RedisTemplate은 SpringDataRedis에서 JedisApi를 상위 수준으로 캡슐화한 것입니다.
기본 jedis와 spring의 redisTemplate을 사용하여 연결 풀을 호출한 결과 큰 차이점을 발견했습니다. dis 단위 테스트: 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
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);
}
Con 포함: 기본 jedis의 효율성은 redisTemplate보다 낫습니다. 또한 테스트 결과 100개의 요청이 사용되었으며 매번 비즈니스 작업이 수행되지 않았으며 실행 속도가 매우 빨랐습니다. 그러나 자체 비즈니스 처리를 추가하거나 몇 초 동안 휴면 상태를 유지하는 경우도 있었습니다. , redis가 50개 이상의 연결에 대해 구성된 연결 풀을 계속 유지한다는 것을 알 수 있습니다.
싱글 쓰레드이기 때문에 마지막 제디스 실행이 완료된 후에도 닫히지 않은 것으로 보이며, 다음 호출에서는 유휴 연결을 할당하지 않고 최소 연결 수가 포화될 때까지 새로운 연결을 열어두는 것으로 보아, 그런 다음 빈 유휴 연결을 다음 연결에 할당합니다(이유에 따르면) 단일 스레드는 새 호출이 이루어질 때 이전 스레드가 완전히 유휴 상태이므로 새 연결이 열리지 않도록 해야 한다고 합니다. 구체적인 이유는 아직 의문입니다. 스레드 풀의 원리와 관련이 있을 수 있습니다.Redis 관련 기술 기사를 더 보려면 Redis 데이터베이스 사용 튜토리얼 소개
칼럼을 방문하여 알아보세요!위 내용은 제다이와 재디스템플릿의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!