Memcached源码解析
来源:互联网 发布:淘宝买家采集软件 编辑:程序博客网 时间:2024/06/06 18:30
一 基本介绍及代码结构
memcached是一个非常有名的高性能分布式缓存系统, 采用memcached作为缓存系统能显著提高系统的性能。
想要更好地发挥对memcached的性能, 对其源代码进行分析显得非常必要。 本文基于memcached-1.4.15进行源代码分析,
假设读者对socket, 管道,多线程编程, hash算法等概念有基本的了解。文系列将从以下几个方面展开分析:
- 基本介绍
- 代码结构
- 线程机制
- 内存机制
本文将主要介绍前面两个部分,后面两个部分其他文章会进行介绍。
memcached基本介绍
- 概念与特点
- 使用场景
- 系统架构
- 一致性hash算法
- 基本命令
概念与特点
作为一个缓存系统,memcached的主要任务在于通过在内存中缓存一些常用数据,减少对数据库的存储操作,一方面将数据存储在内存中, 加快数据的存储速度;另一方面减轻数据库的负载,提高数据库的利用率。 如下图所示:
在应用程序首次获取数据时,从数据库中获取数据,并存储memcached服务器中,再次获取数据时,先查找memcached是否存在所需要的数据,
若存在,则从memcached中返回数据,否则,从数据库中获取, 这也是数据库缓存的基本流程。memcahced是一种开源的高性能分布式
内存对象缓存系统,主要通过减轻数据库负载来加速动态网页应用的访问。主要具有以下几个特点:
- 采用协议简单
主要采用TCP连接同server端进行通信,命令基于简单的文本行协议。
- 基于libevent进行事件处理
libevent是一个高效的事件处理框架,采用libevent进行事件处理,既能减少memcached本身的复杂度,
同时能有效结合libevent跨平台高效处理事件响应的特性,保证memcached的事件处理能力。
- 采用内置键值对的内存存储方式
采用用hash表来存储键值对,保证数据的高效存取,将数据存储在内置的内存空间,结合LRU(Least Recent Used)
算法自动删除使用频率最低的缓存,既能减少memcached所占的存储空间,又能保证数据访问的速度。
- 采用独立的分布式服务器
memcached的“分布式”特指客户-服务器之间一对多的分布式映射,服务器之间不存在分布式的概念,
各个memcached服务器之间不会互相通信实现信息共享, 也不会对存储对象进行复制备份保证数据
的安全性(实现备份来保证数据安全性需要额外的开销,cache数据没有必要保证这样的可靠性)。
参考地址:http://brionas.github.io/2014/01/06/memcached-code/
- Memcached源码解析
- Memcached源码阅读之初始化参数解析
- Memcached源码解析之连接队列
- Memcached源码解析之cas属性
- Memcached源码解析--多线程网络模型
- Memcached源码解析--多线程网络模型
- Memcached源码阅读之初始化参数解析
- Memcached源码解析--多线程网络模型
- Memcached源码分析 - Memcached源码分析之命令解析(2)
- 解析memcached
- memcached全面解析--memcached基础
- memcached 源码分析总结
- memcached源码阅读
- memcached源码学习-hashtable
- memcached源码学习-hashtable
- Memcached源码拆分:Libevent_Thread
- memcached源码分析
- memcached 源码阅读笔记
- 【Java.JMM】
- Xcode 使用PhoneGap情况下调试真机
- Linux 磁盘与文件系统管理
- 花生壳如何激活
- 网站策划
- Memcached源码解析
- 【软件工程】——可行性研究
- Android 菜鸟学习笔记
- c++中整数在内存中的存储(左移右移)
- 深入分析 Java 中的中文编码问题
- 聊聊iPhone6分辨率与适配
- webview中setWebChromeClient和setWebClient区别
- c语言常见的错误,以及解决方法
- hdu2516 取石子游戏