เทคโนโลยี 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 ครั้ง