走进KeyDB( 四 )
用来表示链接属于哪个线程接管 。
KeyDB维护了三个关键的数据结构做链接管理:
-
clients_pending_write:线程专属的链表 , 维护同步给客户链接发送数据的队列
-
clients_pending_asyncwrite:线程专属的链表 , 维护异步给客户链接发送数据的队列
-
clients_to_close:全局链表 , 维护需要异步关闭的客户链接
分成同步和异步两个队列 , 是因为redis有些联动api , 比如pub/sub , pub之后需要给sub的客户端发送消息 , pub执行的线程和sub的客户端所在线程不是同一个线程 , 为了处理这种情况 , KeyDB将需要给非本线程的客户端发送数据维护在异步队列中 。 同步发送的逻辑比较简单 , 都是在本线程中完成 , 以下图来说明如何同步给客户端发送数据:
如上文所提到的 , 一个链接的创建、接收数据、发送数据、释放链接都必须在同个线程执行 。 异步发送涉及到两个线程之间的交互 。 KeyDB通过管道在两个线程中传递消息:
推荐阅读
- 和平精英|走进和平精英,军需宝箱全面更新,各新皮肤上线
- 魔兽世界|魔兽世界燃烧的远征----教你主城挂机每小时1000金
- 王者荣耀|明星都能走进小学课本,《王者荣耀》英雄,化身小学课本封面
- 金泰相|FPX惨败后队员坐上经济舱,糖小幽陪Doinb走进医院,粉丝破防了!
- 韩遂|三国杀:新武将胡车儿技能曝光,韩遂也终能走进军争模式
- 中消协|中消协:“双11”避开直播卖货的7个“坑”
- Find X2将搭载3K屏幕,网友:这才是旗舰该有的样子!
- 2020年疫情过后,最火最赚钱的六个行业
- 从头学习Linux基础
- 发票扫描识别 发票ocr识别