Memcached深入学习与实战笔记

需积分: 9 6 下载量 39 浏览量 更新于2024-07-21 3 收藏 620KB PDF 举报
本文档是宋斌关于Memcached的学习笔记,作者在EMERSON从事嵌入式开发时,出于职业转型和提升自我竞争力的考虑,深入研究了Memcached的代码,并实现了自己的持久化存储模块(memPE),并将代码上传至GitHub。该文章主要针对Memcached的多线程机制进行详细阐述。 Memcached的核心架构包含主线程、工作线程(eventworkerthread)以及一些后台线程。主线程负责创建一个TCP监听socket,持续监听客户端请求。它使用server_sockets或server_socket_unix函数创建socket,根据启动参数选择。当接收到连接请求时,主线程会通过conn_new函数处理,这个函数接收的参数包括: 1. **event_base**:绑定的事件基础,用于异步事件处理,设置为EV_READ(读事件)和EV_PERSIST(持久监听)。 2. **conn_initial_state**:连接初始状态,设为conn_listening,表示准备接受新的连接。 3. **sockethandle**:刚创建的socket句柄,作为hashtable的索引,用于线程池管理。 4. **event_base**:主线程自身的事件基础,用于协调异步操作。 5. **protocol**:指定的通信协议,这里是TCP。 工作线程(eventworkerthread)负责具体的逻辑处理,如哈希表操作、LRU(最近最少使用)管理、数据的解析、传输和查找等。这些线程在系统中协同工作,确保高效的数据存取和处理。 此外,文章还提到了主线程创建的流程,涉及socket的监听、新连接的接受和事件处理。对于想要深入了解Memcached内部工作机制和多线程设计的学习者来说,这篇笔记提供了宝贵的实践经验和理论指导。 如果你对Memcached的性能优化、内存管理、数据一致性保障或者如何在实际项目中应用感兴趣,可以参考宋斌的个人博客<http://www.cainiaods.com/>,那里可能有更多的文章和讨论。最后,作者鼓励读者积极参与交流,共同学习和进步。