近日正在阅读memcached 源码,将在阅读过程中的一些个人疑问挨个记录下来。欢迎拍砖。。。
1.最大连接数200,是多进程还是多线程处理这些连接的,有多少个线程(进程)在处理请求?大致逻辑是怎样的?
答:是多线程处理,4个工作线程,1个主线程,在启动时可更改,最大64个工作线程。master 线程 绑定端口,监听网络连接,接收到网络连接之后,通过线程间的通信(何种方式?)来唤醒woker线程,worker线程在已经连接的描述符执行读写操作,在子线程中注册回调函数。master线程和worker线程之间的通信是通过连接队列。
2.memcached 中的key-value是以什么数据结构存在内存中的,怎样实现快速查找的?
答:在单个hash桶中是以双链表数据结构存储的。查找是先确定哈希桶,再遍历双链表。