`
youngerbaby
  • 浏览: 114982 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

memcached代码阅读(-)

 
阅读更多

 

最近想研究一下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. 一些资源清理


以后希望有时间每一条展开深入了解,并做笔记
分享到:
评论

相关推荐

    memcached-session-manager

    7. **扩展性**:随着Web应用规模的扩大,只需添加更多的 Memcached 服务器,memcached-session-manager 就能轻松应对更高的并发量,无需修改现有代码。 8. **安全性**:虽然 memcached-session-manager 提供了高...

    memcached(十一)memcached-session-manager

    "源码"标签意味着教程可能会深入到代码级别,讲解如何读取和理解`memcached-session-manager`的源代码,或者如何定制和修改它以适应特定的需求。 "工具"标签则表明`memcached-session-manager`是一个实用工具,用于...

    memcached-session-manager_4_tomcat8

    可能包含配置文件、jar包、示例代码或者说明文档等资源。 **详细知识点:** 1. **Tomcat 8.0.33**:这是一个流行的开源Java Servlet容器,用于运行Java Web应用程序。版本8.0.33是其稳定版本之一,支持Java EE 7...

    memcached-session-manager-1.6.5.rar

    它依然支持标准的HttpSession接口,因此开发者可以无缝地迁移现有的会话管理代码。同时,由于Memcached的内存限制,对于大型的会话对象,可能需要进行序列化和反序列化处理,这在设计时需要考虑到性能影响。 总的来...

    memcached-session-manager-tc6-1.6.4.zip

    标题中的"memcached-session-manager-tc6-1.6.4.zip"指的是一个与Memcached相关的session管理器的Tomcat 6版本的组件,版本号为1.6.4。Memcached是一个高性能、分布式的内存对象缓存系统,用于减少数据库负载,提高...

    memcached-1.2.1-win32.zip 和 java_memcached-release_1.6.zip

    3. **编写Java代码**: - 引入必要的依赖:`import net.spy.memcached.MemcachedClient;` - 创建Memcached客户端实例,连接到服务器:`MemcachedClient client = new MemcachedClient(new InetSocketAddress(...

    Memcached-Java-Client-release_2.6.1.zip

    - 配置Memcached服务器地址,通常在代码中通过`MemcachedClient`的构造函数指定。 4. **基本操作** - **设置缓存**:使用`set`方法将键值对存储到Memcached,例如`memcachedClient.set("key", timeout, value);` ...

    hibernate-memcached-1.1.0-sources.zip

    在代码层面,这通常涉及到`@Cache`注解的使用,以及对SessionFactory的配置。 在`hibernate-memcached-1.1.0-sources.zip`中,我们可以看到`META-INF`目录下包含了一些配置文件,例如`pom.xml`,这是Maven项目管理...

    memcached-1.2.6-win32-src

    这个版本是针对Win32平台优化的源代码,使得在Windows环境下也能顺利运行memcached服务。 **memcached** 是一种广泛使用的高性能分布式内存对象缓存系统,它旨在通过减少数据库负载来加速动态Web应用程序。...

    memcached-client-php-0.1.2.rar_memcached-client_php_six4fu

    3. **memcached-client.php** - 这是实际的PHP客户端源代码文件,实现了与Memcached服务器的交互,如设置、获取、删除缓存项,以及管理连接等功能。 4. **README** - 文件包含了项目的简介、安装指南、使用方法等...

    memcached-1.2.4-Win32.rar

    《深入理解Memcached在Windows平台的应用》 Memcached是一款高性能、分布式内存对象缓存系统,它广泛应用于Web应用中,用于减轻数据库负载,提高数据访问速度。本文将围绕标题"memcached-1.2.4-Win32.rar"展开,...

    memcached-1.2.4-Win32.zip

    - **COPYING** 文件是关于软件许可协议的,对于memcached来说,它很可能包含了MIT许可证的信息,该许可证允许自由使用、修改和分发代码,只要保留原始作者的版权信息即可。 - **memcached.exe** 是memcached服务的...

    memcached-1.5.4

    - `memcached-1.5.4`源码包含多个主要目录:`src`存放核心代码,`doc`包含文档,`test`有测试用例,`config`存储配置脚本,`include`包含头文件等。 3. **编译与安装** - 首先,确保系统已经安装了必要的依赖,如...

    memcached-session-manager.zip

    【标题】"memcached-session-manager.zip" 是一个包含与Tomcat8集成的Memcached会话管理器相关的资源压缩包。这个包的目的是帮助用户在Tomcat8应用服务器中使用Memcached作为会话持久化存储,以提高Web应用程序的...

    memcached-session-0.9.jar

    6. **异常处理**:在与Memcached通信过程中可能会遇到网络问题或服务端异常,需要编写合适的错误处理代码。 7. **测试与监控**:如何对Memcached会话管理进行测试,确保其正常工作,并设置监控手段来检测系统性能和...

    hibernate-memcached-1.5.jar

    这个包是最高版本了,google code是1.22,但是这个版本是基础班的1.5版本.是github上源代码经过我打包出来的jar

    MemcachedDemo----分布式缓存系统C#应用实例

    安装完成后,你可以在代码中引入必要的命名空间: ```csharp using Enyim.Caching; using Enyim.Caching.Memcached; ``` 接下来,你需要创建一个`MemcachedClient`实例来连接到Memcached服务器。以下是一个简单的...

    memcached-hibernate-1.3

    google上的这个包最多是1.2.2但是github上是1.3,源代码下载下来后,我打包为jar的

    memcached win32-1.4.4-14

    此外,由于Memcached是用C语言编写的,因此你需要一个C编译器来编译源代码,或者下载预编译的二进制版本,就像“memcached-win32-1.4.4-14”这样的包。 **安装与配置** 1. **下载与解压**:首先,从官方网站或可靠...

    memcached-1.2.1-win32

    2. **CONTRIBUTORS** - 类似于AUTHORS,可能列出所有对项目有贡献的人员,包括代码贡献者、文档撰写者等。 3. **COPYING** - 此文件通常包含了软件的许可证信息,如GPL、MIT、Apache等,定义了用户可以如何使用、...

Global site tag (gtag.js) - Google Analytics