Latest web development tutorials

레디 스 파이프 라인 기술

서버 모델 및 요청 / 응답 프로토콜 TCP 서비스 - 레디 스는 클라이언트에 기초한다. 이 요청은 일반적으로 다음 단계를 수행된다는 것을 의미합니다 :

  • 클라이언트는 일반적으로 서버의 응답을 기다리는, 블록 모드, 소켓 수익을 서버에 쿼리를 전송하고 수신합니다.
  • 서버 처리 명령과 결과를 클라이언트로 반환한다.

레디 스 파이프 라인 기술

서버의 시간에 대응할 수없는 레디 스 파이프 라인 기술은 클라이언트가 서버의 응답을 읽어 결국 한번에 서버에 요청을 전송하도록 계속하고있다.

, 당신이 레디 스 인스턴스를 시작하고 다음 명령을 입력해야 레디 스 파이프 라인을 참조하십시오 :

$(echo -en "PING\r\n SET w3bigkey redis\r\nGET w3bigkey\r\nINCR visitor\r\nINCR visitor\r\nINCR visitor\r\n"; sleep 10) | nc localhost 6379

+PONG
+OK
redis
:1
:2
:3

위의 예에서 우리PING 명령 레디 스 서비스를 사용하여 우리가 w3bigkey 값 레디 스를 설정, 사용할 수 있으며, 우리는 값 w3bigkey 및 방문자 증가 3 번을 얻는다.

반환 된 결과에서는, 서버의 응답을 읽어 궁극적 한번에 한번 서비스를 레디 스 제출에이 명령을 확인하고있다


파이프 라인 기술 이점

기술의 가장 중요한 장점은 파이프 라인 성능 레디 스 서비스를 향상시킬 수있다.

일부 테스트 데이터

다음 테스트에서, 우리는 파이프 기술적 특성을 지원 레디 스 루비 클라이언트를 사용할 것이다, 테스트 파이프 기술 속도의 효과를 강화한다.

require 'rubygems' 
require 'redis'
def bench(descr) 
start = Time.now 
yield 
puts "#{descr} #{Time.now-start} seconds" 
end
def without_pipelining 
r = Redis.new 
10000.times { 
	r.ping 
} 
end
def with_pipelining 
r = Redis.new 
r.pipelined { 
	10000.times { 
		r.ping 
	} 
} 
end
bench("without pipelining") { 
	without_pipelining 
} 
bench("with pipelining") { 
	with_pipelining 
}

수행하는 LAN에 맥 OS X 시스템에서, 상기 데이터가 간단한 스크립트, 파이프 라인 동작을 여는 것을 나타내는, 왕복 지연이 상당히 낮은 개선되었다.

without pipelining 1.185238 seconds 
with pipelining 0.250783 seconds

당신이 볼 수 있듯이, 파이프 라인을 열고, 우리는 5 배의 효율성을 속도.