Operasi arahan ...login
Operasi arahan Redis Manual Cina
pengarang:php.cn  masa kemas kini:2022-04-12 14:07:28

Teknologi saluran paip Redis


Redis ialah perkhidmatan TCP berdasarkan model pelayan pelanggan dan protokol permintaan/tindak balas. Ini bermakna bahawa biasanya permintaan akan mengikut langkah berikut:

  • Pelanggan menghantar permintaan pertanyaan kepada pelayan dan mendengar pengembalian Socket, biasanya dalam mod menyekat, menunggu pelayan untuk bertindak balas.

  • Pelayan memproses arahan dan mengembalikan hasilnya kepada klien.


Teknologi Saluran Paip Redis

Teknologi Saluran Paip Redis boleh membenarkan pelanggan untuk terus menghantar permintaan kepada pelayan apabila pelayan tidak bertindak balas, dan akhirnya membaca semuanya sekali gus Dapatkan respons daripada semua pelayan.

Instance

Untuk melihat saluran paip redis, anda hanya perlu memulakan contoh redis dan masukkan arahan berikut:

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

+PONG
+OK
redis
:1
:2
:3

Dalam contoh di atas, kami menggunakan <🎜 Perintah >PING untuk melihat redis sama ada perkhidmatan itu tersedia, Selepas itu kita tetapkan nilai w3ckey kepada redis, kemudian kita dapat nilai w3ckey dan buat increment pelawat sebanyak 3 kali ganda.

Dalam hasil yang dikembalikan, kita dapat melihat bahawa arahan ini diserahkan kepada perkhidmatan redis sekali gus, dan akhirnya membaca semua respons pelayan sekaligus


Kelebihan teknologi saluran paip

Kelebihan paling ketara teknologi saluran paip adalah untuk meningkatkan prestasi perkhidmatan redis.

Sesetengah data ujian

Dalam ujian berikut, kami akan menggunakan klien Ruby Redis untuk menyokong ciri teknologi saluran paip untuk menguji kesan peningkatan kelajuan teknologi saluran paip.

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 
}

Data daripada melaksanakan skrip ringkas di atas pada Mac OS

without pipelining 1.185238 seconds 
with pipelining 0.250783 seconds

Seperti yang anda lihat, selepas membuka saluran paip, kecekapan kelajuan kami meningkat sebanyak 5 kali ganda.