`
- 浏览:
167146 次
- 性别:
- 来自:
上海
-
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管理是关键,特别是在高并发...
通过对Memcached源码的深入分析,我们不仅理解了其核心功能是如何实现的,还掌握了如何更高效地使用它来提升Web应用的性能。了解这些内部细节对于优化应用程序的缓存策略以及故障排查具有重要意义。