连接建立阶段
- 客户端发起连接:客户端使用Socket创建一个TCP连接,指定Redis服务器的IP地址和端口号(默认6379)。例如在Python中可以使用
socket
库:
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('127.0.0.1', 6379))
- 服务器响应:Redis服务器监听指定端口,接受客户端的连接请求。一旦连接建立,服务器会为该客户端分配资源,准备进行通信。
数据传输阶段
- 命令发送:客户端按照Redis协议格式组装命令,通过Socket发送给服务器。Redis协议采用RESP(Redis Serialization Protocol)格式。例如发送
SET key value
命令,在Python中:
command = '*3\r\n$3\r\nSET\r\n$3\r\nkey\r\n$5\r\nvalue\r\n'
sock.sendall(command.encode())
- 命令处理:服务器接收到命令后,解析命令并执行相应操作。例如对于
SET
命令,服务器会将键值对存储到内存中。
- 响应返回:服务器执行完命令后,将结果按照RESP格式封装,通过Socket返回给客户端。例如
SET
命令成功返回+OK\r\n
,客户端接收响应:
response = sock.recv(1024).decode()
print(response)
断开连接阶段
- 客户端发起关闭:客户端完成操作后,调用Socket的关闭方法,向服务器发送关闭请求。例如在Python中:
sock.close()
- 服务器响应关闭:服务器接收到关闭请求后,清理与该客户端相关的资源,关闭连接。