`
- 浏览:
165841 次
- 性别:
- 来自:
上海
-
1.Memcached管理内存的特点是使用预申请和分组的方式管理内存空间。而不是每次写入时去分配内存。
2.一个slab就是memcached一次申请内存的最小单位。默认大小为1M。
而每一个slab有被划分为多个chunk,每个chunk保存一个item,每个item同时保存了item的结构体,包括key和value。
相同大小的chunk构成了chunks(也就是上面说的构成了组,注意一个chunks数组中的chunk,可能来自多个slab),一个chunks就属于一个slab class,多个chunks(或者说slab class)就构成了slab classes。
3. chunk大小表示为 初始大小*f^n,f为factor,f默认为1.25,n为classid。
4.当你第一次往memcached存储数据时, memcached会去申请1MB的内存, 把该块内存称为一个slab, 也称为一个page, 如果可以存储这个数据的最佳的chunk大小为128B,那么memcached会把刚申请的slab以128B为单位进行分割成8192块. 当这页slab的所有chunk都被用完时,并且继续有数据需要存储在128B的chunk里面时,
如果已经申请的内存小于最大可申请内存10MB时,memcached继续去申请1M内存,继续以128B为单位进行分割再进行存储;如果已经无法继续申 请内存,那么mamcached会先根据LRU算法把队列里面最久没有被使用到的chunk进行释放后,再将该chunk用于存储.
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
### Memcached内存分析、调优、集群 #### 一、Memcached背景介绍 Memcached是一款高性能的分布式内存对象缓存系统,它通过减轻数据库负担来加速动态Web应用程序的速度。最初由LiveJournal的开发者Brad Fitzpatrick...
Memcached的源代码简洁明了,对于理解分布式缓存的工作原理和内存管理有很好的学习价值。通过阅读源码,可以深入了解其内部机制,如哈希表的实现、内存分配策略、网络通信细节等。 总结来说,Memcached是一个高效的...
1. **基于C/S架构**:Memcached采用客户端-服务器模型,客户端应用程序通过网络发送请求到Memcached服务器,服务器处理请求并返回结果。这种架构使得Memcached易于部署和扩展。 2. **简单的协议**:Memcached使用...
**memcached源代码分析** **一、memcached简介** ...通过这两个文件的学习,可以深入理解memcached的内部工作机制,为优化和自定义memcached提供理论基础,或者帮助开发者在类似项目中应用memcached的设计理念。
通过深入研究`memcached1.4.5`的源代码,我们可以了解到分布式缓存系统的内部运作机制,这对于理解和优化类似系统、开发自己的内存缓存服务有着极大的价值。同时,这也有助于提升对网络编程、内存管理和并发处理的...
Memcached是一款广泛使用的开源分布式内存缓存系统,它旨在缓解数据库负载,提高Web应用程序的性能。Memcached-1.49版本是这个系统的特定发行版,包含源代码,供开发者研究、学习和定制。了解Memcached的核心原理和...
源码阅读可以帮助理解其内部机制,如数据结构(如slab分配)、事件驱动模型(libevent或select/poll/epoll等)、网络通信、内存管理等。 **六、PPT学习资源** 提供的PPT可能包含Memcached的介绍、使用案例、性能...
- 单线程模型:由于`memcached`在内存中处理所有操作,避免了多线程中的锁竞争问题,提高了效率。 - 无锁数据结构:使用原子操作来更新数据,保证了并发环境下的正确性。 8. **一致性哈希** - 在分布式环境中,`...
- 源码阅读可以帮助开发者理解Memcached的内存管理、数据结构、网络通信等核心部分,为自定义扩展或优化提供基础。 - Memcached的内存管理采用了slab分配器,将内存划分为不同的slabs,每个slab管理特定大小的键值...
1. **Memcached协议** - memcached使用简单的文本协议,客户端需要理解并实现这个协议来与服务器通信,包括GET、SET、DELETE等命令。 2. **C++网络编程** - 使用C++进行网络编程通常涉及套接字API,如Berkeley套接...
它基于一个简单的键值对存储模型,支持多种数据类型(如字符串、整数、双精度浮点数),并且通过网络进行通信,采用TCP协议,使得任何可以发送TCP包的应用都可以与memcached进行交互。 二、memcached 1.4.0新特性 ...
4. **简单的协议**:Memcached使用基于文本的简单协议,易于理解和实现,同时也便于与其他语言的客户端进行通信。 5. **高性能**:通过多线程模型和非阻塞I/O,Memcached能处理大量并发请求,确保服务的高可用性。 ...
Memcached是一种高性能、分布式内存对象缓存系统,用于在分布式环境中快速存储和检索数据,以减轻数据库的负载。客户端包`memcached-1.4.12.tar.gz`是...正确理解和使用此包,有助于优化和扩展各种基于内存缓存的应用。
Memcached 使用基于内存的键值存储模型,其工作流程简单高效:应用程序通过网络协议与Memcached服务器通信,进行数据的读写操作。数据以键(key)和值(value)的形式存储,键是唯一的标识符,值可以是任意类型的...
《深入理解Memcached 3.0.4:缓存系统的基石》 Memcached,作为一款广泛应用的分布式内存对象缓存系统,为Web应用程序提供高效的数据缓存服务,从而减轻数据库的负载。本文将深入探讨Memcached 3.0.4这一版本的特性...
1. **Memcached基础**:首先,教程可能会介绍memcached的基本概念,如其内存存储模型、key-value结构,以及它如何提供快速的缓存服务。 2. **Session管理问题**:在Web开发中,session管理是关键,特别是在高并发...