MST

星途 面试题库

面试题:网络编程中Redis在分布式系统里Socket通信的基础机制

在分布式系统的网络编程场景下,简述Redis使用Socket进行通信的基本流程,包括连接建立、数据传输和断开连接这几个阶段,以及每个阶段可能涉及到的关键操作和命令。
25.0万 热度难度
后端开发网络编程

知识考点

AI 面试

面试题答案

一键面试

连接建立阶段

  1. 客户端发起连接:客户端使用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))
  1. 服务器响应:Redis服务器监听指定端口,接受客户端的连接请求。一旦连接建立,服务器会为该客户端分配资源,准备进行通信。

数据传输阶段

  1. 命令发送:客户端按照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())
  1. 命令处理:服务器接收到命令后,解析命令并执行相应操作。例如对于SET命令,服务器会将键值对存储到内存中。
  2. 响应返回:服务器执行完命令后,将结果按照RESP格式封装,通过Socket返回给客户端。例如SET命令成功返回+OK\r\n,客户端接收响应:
response = sock.recv(1024).decode()
print(response)

断开连接阶段

  1. 客户端发起关闭:客户端完成操作后,调用Socket的关闭方法,向服务器发送关闭请求。例如在Python中:
sock.close()
  1. 服务器响应关闭:服务器接收到关闭请求后,清理与该客户端相关的资源,关闭连接。