关于通讯协议,见https://redis.readthedocs.org/en/latest/topic/protocol.html
1)命令 set mykey myvalue 对应 要发送到Redis的字符串(要转化为二进制数据)是
"*3\r\n$3\r\nset\r\n$5\r\nmykey\r\n$7\r\nmyvalue\r\n"
2)命令 get mykey 对应字符串是 "*2\r\n$3\r\nget\r\n$5\r\nmykey\r\n"
3)最后得到Redis发回的响应是 "+OK\r\n$7\r\nmyvalue\r\n"
我的问题是,Redis这样的响应格式,是否意味者 客户端发完命令(需要得到返回
值的命令如get)后,必须要等待回应到达之后才能发送下一个命令? 这样对客户端来说 效率是否低了点?
Ini ialah kaedah penstriman TCP biasa.
"Kecekapan rendah untuk pelanggan" anda hanyalah fantasi anda, bukan? Adakah terdapat sebarang data untuk menyokong ini? Tanpa sebarang data untuk menyokongnya, bolehkah ia dinilai dengan betul berdasarkan perasaan subjektif?
Terdapat juga hubungan antara kecekapan dan perniagaan Secara umumnya, hanya apabila kecekapan tidak menyokong perniagaan, anda akan mula mempertimbangkan isu kecekapan bukankah terlalu awal untuk anda mempertimbangkan kecekapan ini sebelum anda melakukan apa-apa ?
Satu tambahan terakhir. . Ini ialah definisi dalam protokol tcp Jika terdapat apa-apa yang tidak jelas, http://en.wikipedia.org/wiki/Transmission_Control_Protocol pergi ke sini untuk mengetahui tentang spesifikasi tcp. .
Mungkin soalan ini menjadi: Bolehkah redis hanya menghantar satu arahan dalam satu permintaan? Ia akan menjadi lebih baik
Kesimpulan: Tidak kira protokol permintaan redis yang digunakan, penghantaran berbilang arahan dalam satu permintaan disokong
protokol permintaan redis
Format protokol permintaan redis bukan standard (juga dikenali sebagai Sebaris):
Format protokol permintaan redis standard:
Jadi apabila kita perlu menetapkan nilai nama kunci kepada diaocow, kita boleh menggunakan dua format protokol di atas (pembaca yang berminat boleh menggunakan arahan telnet atau nc untuk mengujinya sendiri)
Bagaimanakah protokol permintaan Redis menyokong pelaksanaan kelompok? (Inilah yang semua orang sering panggil mod saluran paip)
Sebagai contoh, saya perlu melaksanakan dua arahan berikut dalam kelompok:
tetapkan nama diaocow
tetapkan negara china
Kemudian data dalam permintaan akan kelihatan seperti ini (dengan mengandaikan kami menggunakan protokol standard): *3rn$3rnsetrn$4rnnamern$7rndiaocowrn*3rn$3rnsetrn$7rncountryrn$5rnchinarn
Kemudian di dalam redis, ia akan dihuraikan seperti ini, kod pseudo:
parseCommandInfo akan dihuraikan mengikut protokol yang berbeza: jika bait pertama ialah '*', protokol standard akan digunakan
Catatan: Semua pelanggan redis melaksanakan fungsi menghantar arahan secara berkelompok, yang tidak lebih daripada menghantar berbilang arahan kepada redis mengikut format yang baru kami nyatakan Pembaca yang berminat boleh merujuk kepada bahasa anda biasa dengan Pelanggan