Memcached深入学习与实战笔记
需积分: 9 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/>,那里可能有更多的文章和讨论。最后,作者鼓励读者积极参与交流,共同学习和进步。
2019-07-31 上传
424 浏览量
2016-10-04 上传
2023-02-13 上传
2012-03-06 上传
2018-03-27 上传
2018-06-27 上传
2013-09-14 上传
ToddSong
- 粉丝: 10
- 资源: 6
最新资源
- Java集合ArrayList实现字符串管理及效果展示
- 实现2D3D相机拾取射线的关键技术
- LiveLy-公寓管理门户:创新体验与技术实现
- 易语言打造的快捷禁止程序运行小工具
- Microgateway核心:实现配置和插件的主端口转发
- 掌握Java基本操作:增删查改入门代码详解
- Apache Tomcat 7.0.109 Windows版下载指南
- Qt实现文件系统浏览器界面设计与功能开发
- ReactJS新手实验:搭建与运行教程
- 探索生成艺术:几个月创意Processing实验
- Django框架下Cisco IOx平台实战开发案例源码解析
- 在Linux环境下配置Java版VTK开发环境
- 29街网上城市公司网站系统v1.0:企业建站全面解决方案
- WordPress CMB2插件的Suggest字段类型使用教程
- TCP协议实现的Java桌面聊天客户端应用
- ANR-WatchDog: 检测Android应用无响应并报告异常