Redis 服务器通过 TCP 与客户端通信。先监听 6379 端口:
let listener = TcpListener::bind("127.0.0.1:6379").unwrap();
for stream in listener.incoming() {
match stream {
Ok(_stream) => {
println!("accepted new connection");
}
Err(e) => {
println!("error: {}", e);
}
}
}
Redis 客户端向服务器发送命令,服务器返回响应。现在实现 Redis 的 PING 命令,它用来检查服务器是否在线且能正常响应。
服务器对 PING 的响应是 +PONG\r\n——这是 RESP 编码的字符串。 RESP 是 Redis 服务器与客户端之间通信的专用格式。
为取得客户端的连接,调用监听器的 incoming 方法,这会返回一个迭代 TcpStream 对象的迭代器。每个 TcpStream 对象代表一次新的连接。通过对 TcpStream 对象调用 write_all 以发送消息。
要注意 read_to_end 方法会一直读取字节流直至字节流被关闭。
现在实现 ECHO 命令,它也是用于测试的。