پروتکل (RESP) چیه؟ 🤔
سریال سازی پروتکل یا REdis Serialization Protocol یا RESP، یک پروتکل ساده و در عین حال قدرتمند برای ارتباط با کلاینت و سرور ردیس هست.
یکی از مزیت های قابل توجه این پروتکل، پشتیبانی اون از انواع داده ها هست. همچنین همیشه اولین کاراکتر پروتوکل، نوع داده اونه و هر کدوم از داده ها، کاراکتر خاص خودشونو دارن تا برای ردیس قابل فهم باشه، مثال⬇️
- + : رشته های ساده
- - : خطا ها
- : : عدد صحیح
- $ : رشته های زیاد (برای ذخیره داده های باینری)
- * : آرایه ها
اما وقتی اولین بایت نوع داده هست، پس در انتهای اون چه کاراکتری قرار میگیره؟
در انتهایی خط RESP برای جداسازی دستورات از <LF> و <CR> استفاده میشه، که به این صورت ترجمه میشن :
- ترجمه <CR> : با کاراکتر "r\" نشون داده میشه. این کارکتر بدون این که به خط بعدی بره، به ابتدای خط میره.
- ترجمه <LF> : با کاراکتر "n\" نشون داده میشه و به خط بعدی میره.
به صورت کلی RESP توسط کتابخونه های خود redis مدیریت میشه.
یک نمونه از RESP به این صورته:
حالا بیاید کد بالا رو ترجمه کنیم!
نکته : تمام کارکتر های "r\n\" به اول خط بعدی میره.
- 2
-
- فرمان SET : یک مقدار رو به صورت "key-value" تنظیم میکنه
-
- رشته
-
- رشته myvalue: مقداری که در کلید ما ست میشه.
- در نهایت کاراکتر های \r\n: به درخواست پایان میده.
تموم این دستورات و کاراکتر ها در ردیس به این صورت نمایش داده میشه :
به صورت کلی این کار توسط پکیج و کتابخونه های خود ردیس انجام میشه، ولی اینکه بدونیم در پشت صحنه چه اتفاقی میفته، باعث میشه دیدمون نسبت بهش تغییر پیدا کنه. مثلا برای اینکه بدونید درخواست SET رو چجوری میتونیم پیاده سازی کنیم، میتونید این نمونه کد هارو در زبان های مختلف ببینید⚡️
#redis
@CodeModule
سریال سازی پروتکل یا REdis Serialization Protocol یا RESP، یک پروتکل ساده و در عین حال قدرتمند برای ارتباط با کلاینت و سرور ردیس هست.
یکی از مزیت های قابل توجه این پروتکل، پشتیبانی اون از انواع داده ها هست. همچنین همیشه اولین کاراکتر پروتوکل، نوع داده اونه و هر کدوم از داده ها، کاراکتر خاص خودشونو دارن تا برای ردیس قابل فهم باشه، مثال
- + : رشته های ساده
- - : خطا ها
- : : عدد صحیح
- $ : رشته های زیاد (برای ذخیره داده های باینری)
- * : آرایه ها
اما وقتی اولین بایت نوع داده هست، پس در انتهای اون چه کاراکتری قرار میگیره؟
در انتهایی خط RESP برای جداسازی دستورات از <LF> و <CR> استفاده میشه، که به این صورت ترجمه میشن :
- ترجمه <CR> : با کاراکتر "r\" نشون داده میشه. این کارکتر بدون این که به خط بعدی بره، به ابتدای خط میره.
- ترجمه <LF> : با کاراکتر "n\" نشون داده میشه و به خط بعدی میره.
به صورت کلی RESP توسط کتابخونه های خود redis مدیریت میشه.
یک نمونه از RESP به این صورته:
*2\r\n$3\r\nSET\r\n$5\r\nmykey\r\n$7\r\nmyvalue\r\n
حالا بیاید کد بالا رو ترجمه کنیم!
نکته : تمام کارکتر های "r\n\" به اول خط بعدی میره.
- 2
*
: آرایه ای رو با دو عنصر (فرمان(command) و آرگومان(argument)) نشون میده.-
$3
: طول اولین رشته زیاد رو نشون میده (فرمان)- فرمان SET : یک مقدار رو به صورت "key-value" تنظیم میکنه
-
$5
: طوله کلید رو نشون میده (key)- رشته
mykey
: کلیدیه که باید مقداری درونش تنظیم بشه.-
$7
: طوله مقدار رو نشون میده (value)- رشته myvalue: مقداری که در کلید ما ست میشه.
- در نهایت کاراکتر های \r\n: به درخواست پایان میده.
تموم این دستورات و کاراکتر ها در ردیس به این صورت نمایش داده میشه :
SET mykey myvalue
به صورت کلی این کار توسط پکیج و کتابخونه های خود ردیس انجام میشه، ولی اینکه بدونیم در پشت صحنه چه اتفاقی میفته، باعث میشه دیدمون نسبت بهش تغییر پیدا کنه. مثلا برای اینکه بدونید درخواست SET رو چجوری میتونیم پیاده سازی کنیم، میتونید این نمونه کد هارو در زبان های مختلف ببینید
#redis
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10⚡2