构建我自己的 Redis 笔记

CodeCrafters 项目实战经历

笔记
RedisTCP 协议Rust笔记

2026-04-06

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 命令,它也是用于测试的。