RESP Protocol หรือ REdis Serialization Protocol
เป็น protocol ที่ Redis ใช้ในการติดต่อสื่อสารกัน
โดยมรเป้าหมายดังนี้

  • ง่ายต่อการ implement
  • ทำงานรวดเร็ว
  • คนทั่วไปสามารถอ่านเข้าใจได้ง่าย

โดยข้อมูลที่ serialize ได้มีหลายหลายชนิดทั้ง integer, string และ array
ดังนั้นเพื่อความเข้าใจ มาลองศึกษา และ เขียน code สร้างขึ้นมาเองแบบง่าย ๆ

เริ่มด้วยรูปแบบพื้นฐานของ protocol ก่อน

  • ใช้งาน TCP ในการติดต่อสื่อสาร
  • เป็นการติดต่อสื่อสารแบบ request-response model (synchronous)
  • มีรูปแบบการรับส่งข้อมูลง่าย ๆ

รูปแบบการรับา่งข้อมูล เป็นดังนี้

  • * บอกจำนวนของ argument ที่ส่งมา เช่น *2 คือ argument 2 ตัว เช่น $get counter เป็นต้น
  • $ คือจำนวน byte ของ argument
  • \r\n บอกการจบหรือสิ้นสุด

ตัวอย่างเช่น

มาลองเขียน code ด้วยภาษา go เพื่อสร้าง RESP server กันดีกว่า

ทำการ start TPC server ขึ้นมา
เพื่อรับ connection ของ client ผ่านทาง Redis-cli ปกติ
จากนั้นทำการ response กลับไปด้วยคำว่า OK
โดยมีรูปแบบคือ +OK\r\n

  • + คือ type string
  • – คือ error
  • : คือ integer

ตัวอย่าง code แบบง่าย ๆ เพื่อให้ทำงานตามที่ต้องการ

เมื่อมีการ connect มาจาก Redis-cli จะเป็นดังนี้

ลองศึกษาไปทีละนิดทีละหน่อย ด้วยการเขียน code
ก็ทำให้เข้าใจมากขึ้นเช่นเดียวกัน
ลองเขียนเล่นกันดูนะครับ