Redis连接深度剖析(redis连接详情)
![image-20200513143106627](C:\Users\wwy\AppData\Roaming\Typora\typora-user-images\image-20200513143106627.png)
Redis是一个开源的内存对象数据库,广泛应用于缓存系统和消息代理系统。它可以提供数据库,高速缓存,消息队列等服务,可以在服务器端,客户端等不同环境下执行。本文将从客户端代码角度来深入剖析Redis的连接过程。
Redis支持在客户端与服务端之间创建连接,采用TCP或者unix socket的方式。
客户端可以使用redis对象的connect方法来完成TCP的socket连接,如下图所示:
“`python
# connect
host, port = ‘127.0.0.1’, 6379
redis = redis.Redis(host=host, port=port)
redis.connect()
Redis的TCP连接是基于安全传输的双向管道,因此客户端除了向Redis发出请求之外,还可以接收服务器端的响应。
当Redis服务器收到客户端发出的连接请求后,会向客户端发送欢迎消息“+OK\r\n”。
如下图所示,客户端会不断接收服务端发来的消息,查看是否有“+OK\r\n”的返回,如果有,则说明连接成功。
```shell# get output
output = read_from_connection()if output == '+OK\r\n':
# connection is established
当Redis服务器收到客户端发来的命令请求时,会对其进行解析,然后根据对应的处理结果,向客户端返回响应报文。
比如服务器收到客户端发出“ PING”的请求,Redis服务器会给客户端发送“+PONG\r\n”的响应报文,客户端根据报文内容可以知道Redis服务器处理了客户端的命令请求,并且没有出现错误。
“`python
# recv response
output = read_from_connection()
if output == ‘+PONG\r\n’:
# ping response, command is successful
以上就是Redis的连接过程,从客户端代码角度剖析了以上几个环节。它们合起来构成了Redis的客户端与服务端之间相互通信的完整过程,Redis这种双向管道的连接形式使它可以高效执行各种数据操作。