redis源代码分析13–client连接(下)

这一节我们介绍下client连接的几个标志。

client的flags的取值有如下几种:

#define REDIS_SLAVE 1      /* This client is a slave server */
#define REDIS_MASTER 2     /* This client is a master server */
#define REDIS_MONITOR 4    /* This client is a slave monitor, see MONITOR */
#define REDIS_MULTI 8      /* This client is in a MULTI context */
#define REDIS_BLOCKED 16   /* The client is waiting in a blocking operation */
#define REDIS_IO_WAIT 32   /* The client is waiting for Virtual Memory I/O */

redis支持主从复制、监控特性,对这些server的连接状态也是保存在当前server的redisClient结构中, 并在redisClient的flags标志中设置REDIS_SLAVE 、REDIS_MASTER、 REDIS_MONITOR参数。我们在后续的章节中详细分析redis的主从复制、监控等特性。

一般的client仅会设置REDIS_MULTI、REDIS_BLOCKED、REDIS_IO_WAIT中的1个或多个。REDIS_MULTI跟redis的事务支持相关,我们后续介绍。REDIS_BLOCKED标志跟redis支持的list阻塞式pop(BLPOP、BRPOP)有关,也就是当list为空的时候,会阻塞client,一直到有元素加入list,此时再pop。REDIS_IO_WAIT跟命令字有关,对于某些命令,如果启用vm的话,需要提前加载其key。我们在命令处理章节中分析。

此条目发表在 redis 分类目录。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已被标记为 *

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>