keys命令实现
keysCommand
| dictGetSafeIterator
| while(dictNext)
| dictGetKey
| addReplyBulk
| dictReleaseIterator
| setDeferredMultiBulkLength
其中,addReplyBulk用于注册写事件,并将查询到的key放入输出缓存。
处理机制
- keys在执行期间会阻塞其他客户端
- keys执行是一次查询所有数据,根据查询结果量的大小,一次或分批次发送查询的结果(依靠事件驱动)