Latest web development tutorials

เทคโนโลยี Redis ท่อส่ง

Redis จะขึ้นอยู่กับลูกค้า - รุ่นของเซิร์ฟเวอร์และคำขอ / โปรโตคอลการตอบสนองบริการที่เป็น TCP ซึ่งหมายความว่าการร้องขอโดยทั่วไปแล้วจะเป็นไปตามขั้นตอนเหล่านี้:

  • ลูกค้าส่งแบบสอบถามไปยังเซิร์ฟเวอร์และฟังผลตอบแทนซ็อกเก็ตมักจะอยู่ในโหมดการปิดกั้นการรอการตอบสนองของเซิร์ฟเวอร์
  • คำสั่งประมวลผล Server และผลตอบแทนให้กับลูกค้า

เทคโนโลยี Redis ท่อส่ง

เทคโนโลยีท่อ Redis ไม่สามารถตอบสนองในเวลาของเซิร์ฟเวอร์ที่ลูกค้ายังคงสามารถส่งคำขอไปยังเซิร์ฟเวอร์และในที่สุดทั้งหมดในครั้งเดียวในการอ่านการตอบสนองของเซิร์ฟเวอร์

ตัวอย่าง

ดูท่อ Redis เพียงแค่คุณจะต้องเริ่มต้นเช่น Redis และป้อนคำสั่งต่อไปนี้:

$(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 บริการคำสั่ง Redis ไม่สามารถใช้ได้แล้วเราได้ตั้งค่า Redis w3bigkey และจากนั้นเราจะได้รับ w3bigkey คุ้มค่าและทำให้ผู้เข้าชมเพิ่มขึ้น 3 ครั้ง

ในผลการกลับมาเราจะเห็นคำสั่งเหล่านี้ที่ส่งหนึ่งครั้งเพื่อ Redis บริการและในที่สุดทั้งหมดในครั้งเดียวในการอ่านการตอบสนองของเซิร์ฟเวอร์


Advantage เทคโนโลยีทางท่อ

ข้อได้เปรียบที่สำคัญที่สุดของเทคโนโลยีเพื่อปรับปรุงท่อบริการ Redis ประสิทธิภาพ

บางข้อมูลการทดสอบ

ในการทดสอบต่อไปนี้เราจะใช้ไคลเอนต์ Redis ทับทิมที่สนับสนุนลักษณะทางเทคนิคท่อท่อเทคโนโลยีการทดสอบเพื่อเพิ่มผลกระทบของความเร็ว

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 ในระบบ Mac OS X ในการดำเนินการดังกล่าวข้างต้นข้อมูลที่บ่งชี้ว่าสคริปต์ง่ายนี้เปิดดำเนินการท่อล่าช้าไปกลับได้รับการปรับปรุงค่อนข้างต่ำ

without pipelining 1.185238 seconds 
with pipelining 0.250783 seconds

ที่คุณสามารถดูเปิดท่อเราเพิ่มความเร็วประสิทธิภาพโดย 5 ครั้ง