Redis使用一种名为RESP(REDIS序列化协议)的协议,这是一种设计用于序列化数据 struct 的二进制安全协议.它不只是像HTTP那样的纯文本,所以对于Redis命令来说,简单地从TCP流中读取行并不总是正确的.
use std::io::{self, BufRead, BufReader};
use std::net::TcpStream;
fn handle_connection(mut stream: TcpStream) {
let mut buf_reader = BufReader::new(&mut stream);
loop {
let mut line = String::new();
match buf_reader.read_line(&mut line) {
Ok(0) => break, // End of stream
Ok(_) => {
if line.starts_with("*") {
// Handle Redis command
// You will need to implement proper RESP parsing here
println!("Redis command: {}", line.trim());
} else {
// Not a Redis command or end of command
break;
}
}
Err(e) => {
eprintln!("Failed to read from stream: {}", e);
break;
}
}
}
}
好评:https://redis.io/docs/reference/protocol-spec/#:~:text=RESP%20is%20essentially%20a%20serialization,an%20array%20of%20bulk%20strings.