24.1 成为监视器

发送MONITOR命令可以让一个普通客户端变为一个监视器,该命令的实现原理可以用以下伪代码来实现:



def MONITOR():
    # 
打开客户端的监视器标志
    client.flags |= REDIS_MONITOR
    # 
将客户端添加到服务器状态的monitors
链表的末尾
    server.monitors.append(client)
    # 
向客户端返回OK
    send_reply("OK")

举个例子,如果客户端c10086向服务器发送MONITOR命令,那么这个客户端的REDIS_MONITOR标志会被打开,并且这个客户端本身会被添加到monitors链表的表尾。

假设客户端c10086发送MONITOR命令之前,monitors链表的状态如图24-2所示,那么在服务器执行客户端c10086发送的MONITOR命令之后,monitors链表将被更新为图24-3所示的状态。

图24-2 客户端c10086执行MONITOR命令之前的monitors链表

图24-3 客户端c10086执行MONITOR命令之后的monitors链表