最近想研究一下memcached实现,主要目的是熟悉和学习Linux C的开发,这个对android native开发和服务端的开发都是相通的,下面只是简单的看了下memcached.h和memcached.c main入口函数的源码,先把大概的理解记录一下,还有很多细节没有深入了解,慢慢来把。整个过程看的还是比较吃力的,对libc的库函数很不了解。
memcached版本1.4.9
Memcached.h
主要定义了memcached主要的数据结构和方法。
比如几个主要的结构定义:
1. memcached链接conn
2. memcached存储结构_stritem
3. memcached的设置结构settings
4. 全局状态stats
5. 。。。。。。
Memcached.c main函数代码阅读
main函数基本流程:
1. 判断libevent版本,需要大于1.3
2. 截获SIGINT信号的处理(这个为什么截获,还没有深入了解)
3. 初始化settings结构的一些信息,主要是memcached运行时的一些参数
4. 初始化udp处理线程数
5. 初始化sasl处理协议(对sasl不太了解)
6. 设置tcp和udp的端口
7. core文件的访问的设置
8. 检查和设置打开文件的数目
9. 用户权限的判断,禁止用root权限运行
10. 如果支持sasl验证,进行响应初始化
11. 守护进程处理,忽略SIGHUP信号的处理(守护进程不处理SIGHUP?这个在确认一下)
12. 处理内存翻页,锁定进程内存翻页到交换区(mlockall)
这个是为了什么?禁止翻页是不是优化访问速度?
13. 初始化libevent主线程
14. 初始化一些全局状态(stats_init)
15. 初始化chunk(slabs_init)??
打问号,需要继续看代码
16. 初始化连接池conn_init
17. 忽略SIGPIPE信号,避免因为访问关闭管道导致进程退出
18. 初始化工作线程(thread_init)
19. 创建assoc 维护线程? assoc还没高明白
20. 初始化时序clock_handler,这个还不太明白
21. socket初始化(需要继续看代码细化过程)
22. 保存进程文件save_pid
23. 开始事件循环event_base_loop
24. 一些资源清理
以后希望有时间每一条展开深入了解,并做笔记
分享到:
相关推荐
7. **扩展性**:随着Web应用规模的扩大,只需添加更多的 Memcached 服务器,memcached-session-manager 就能轻松应对更高的并发量,无需修改现有代码。 8. **安全性**:虽然 memcached-session-manager 提供了高...
"源码"标签意味着教程可能会深入到代码级别,讲解如何读取和理解`memcached-session-manager`的源代码,或者如何定制和修改它以适应特定的需求。 "工具"标签则表明`memcached-session-manager`是一个实用工具,用于...
可能包含配置文件、jar包、示例代码或者说明文档等资源。 **详细知识点:** 1. **Tomcat 8.0.33**:这是一个流行的开源Java Servlet容器,用于运行Java Web应用程序。版本8.0.33是其稳定版本之一,支持Java EE 7...
它依然支持标准的HttpSession接口,因此开发者可以无缝地迁移现有的会话管理代码。同时,由于Memcached的内存限制,对于大型的会话对象,可能需要进行序列化和反序列化处理,这在设计时需要考虑到性能影响。 总的来...
标题中的"memcached-session-manager-tc6-1.6.4.zip"指的是一个与Memcached相关的session管理器的Tomcat 6版本的组件,版本号为1.6.4。Memcached是一个高性能、分布式的内存对象缓存系统,用于减少数据库负载,提高...
3. **编写Java代码**: - 引入必要的依赖:`import net.spy.memcached.MemcachedClient;` - 创建Memcached客户端实例,连接到服务器:`MemcachedClient client = new MemcachedClient(new InetSocketAddress(...
- 配置Memcached服务器地址,通常在代码中通过`MemcachedClient`的构造函数指定。 4. **基本操作** - **设置缓存**:使用`set`方法将键值对存储到Memcached,例如`memcachedClient.set("key", timeout, value);` ...
在代码层面,这通常涉及到`@Cache`注解的使用,以及对SessionFactory的配置。 在`hibernate-memcached-1.1.0-sources.zip`中,我们可以看到`META-INF`目录下包含了一些配置文件,例如`pom.xml`,这是Maven项目管理...
这个版本是针对Win32平台优化的源代码,使得在Windows环境下也能顺利运行memcached服务。 **memcached** 是一种广泛使用的高性能分布式内存对象缓存系统,它旨在通过减少数据库负载来加速动态Web应用程序。...
3. **memcached-client.php** - 这是实际的PHP客户端源代码文件,实现了与Memcached服务器的交互,如设置、获取、删除缓存项,以及管理连接等功能。 4. **README** - 文件包含了项目的简介、安装指南、使用方法等...
《深入理解Memcached在Windows平台的应用》 Memcached是一款高性能、分布式内存对象缓存系统,它广泛应用于Web应用中,用于减轻数据库负载,提高数据访问速度。本文将围绕标题"memcached-1.2.4-Win32.rar"展开,...
- **COPYING** 文件是关于软件许可协议的,对于memcached来说,它很可能包含了MIT许可证的信息,该许可证允许自由使用、修改和分发代码,只要保留原始作者的版权信息即可。 - **memcached.exe** 是memcached服务的...
- `memcached-1.5.4`源码包含多个主要目录:`src`存放核心代码,`doc`包含文档,`test`有测试用例,`config`存储配置脚本,`include`包含头文件等。 3. **编译与安装** - 首先,确保系统已经安装了必要的依赖,如...
【标题】"memcached-session-manager.zip" 是一个包含与Tomcat8集成的Memcached会话管理器相关的资源压缩包。这个包的目的是帮助用户在Tomcat8应用服务器中使用Memcached作为会话持久化存储,以提高Web应用程序的...
6. **异常处理**:在与Memcached通信过程中可能会遇到网络问题或服务端异常,需要编写合适的错误处理代码。 7. **测试与监控**:如何对Memcached会话管理进行测试,确保其正常工作,并设置监控手段来检测系统性能和...
这个包是最高版本了,google code是1.22,但是这个版本是基础班的1.5版本.是github上源代码经过我打包出来的jar
安装完成后,你可以在代码中引入必要的命名空间: ```csharp using Enyim.Caching; using Enyim.Caching.Memcached; ``` 接下来,你需要创建一个`MemcachedClient`实例来连接到Memcached服务器。以下是一个简单的...
google上的这个包最多是1.2.2但是github上是1.3,源代码下载下来后,我打包为jar的
此外,由于Memcached是用C语言编写的,因此你需要一个C编译器来编译源代码,或者下载预编译的二进制版本,就像“memcached-win32-1.4.4-14”这样的包。 **安装与配置** 1. **下载与解压**:首先,从官方网站或可靠...
2. **CONTRIBUTORS** - 类似于AUTHORS,可能列出所有对项目有贡献的人员,包括代码贡献者、文档撰写者等。 3. **COPYING** - 此文件通常包含了软件的许可证信息,如GPL、MIT、Apache等,定义了用户可以如何使用、...