http://tank.blogs.tkiicpp.com/category/programming/memcache/
Memcached主要的cache机制是LRU(最近最少用)算法+超时失效
http://code.google.com/p/memcached/
Memcached 集群架构方面的问题
http://kb.cnblogs.com/page/69074/#how%20does%20memcached%20work
Memcache内存分配策略
1、Page为内存分配的最小单位。
Memcached的内存分配以page为单位,默认情况下一个page是1M,可以通过-I参数在启动时指定。
2、Slabs划分数据空间。
Memcached并不是将所有大小的数据都放在一起的,而是预先将数据空间划分为一系列slabs,每个slab只负责一定范围内的数据存储。
memcached默认情况下下一个slab的最大值为前一个的1.25倍,这个可以通过修改-f参数来修改增长比例
3、Chunk才是存放缓存数据的单位。
Chunk是一系列固定的内存空间,这个大小就是管理它的slab的最大存放大小
4、Slab的内存分配。
Memcached在启动时通过-m指定最大使用内存,但是这个不会一启动就占用,是随着需要逐步分配给各slab的。
如果一个新的缓存数据要被存放,memcached首先选择一个合适的slab,然后查看该slab是否还有空闲的chunk,如果有则直接存放进去;如果没有则要进行申请。
slab申请内存时以page为单位,所以在放入第一个数据,无论大小为多少,都会有1M大小的page被分配给该slab。
申请到page后,slab会将这个page的内存按chunk的大小进行切分,这样就变成了一个chunk的数组,在从这个chunk数组中选择一个用于存储数据
5、Memcached内存分配策略。
综合上面的介绍,memcached的内存分配策略就是:按slab需求分配page,各slab按需使用chunk存储。
这里有几个特点要注意,
Memcached分配出去的page不会被回收或者重新分配
Memcached申请的内存不会被释放
slab空闲的chunk不会借给任何其他slab使用
提供了gets和cas命令
分享到:
相关推荐
- 哈希分布:Memcache内部使用一致性哈希算法,将键映射到特定服务器,减少因服务器增减导致的数据重新分布。 - 序列化与反序列化:默认情况下,PHP的Memcache扩展会自动处理数据的序列化和反序列化,允许存储复杂...
**Python库meta_memcache-0.4.2-py3-none-any.whl详解** `meta_memcache` 是一个针对Python的高效、轻量级的Memcached客户端库,它提供了对Memcached缓存服务的全面支持。Memcached是一种分布式内存对象缓存系统,...
### Memcached内存缓存系统详解 #### 一、概述 Memcached是一款高性能的分布式内存对象缓存系统,用于加速动态Web应用,减轻数据库负载。它通过在内存中缓存数据和对象来减少读写数据库的次数,从而提高网站的速度...
【PHP面试知识点详解】 1. **SESSION与COOKIE**:禁用COOKIE后,SESSION仍然可以使用。SESSION基于服务器端存储,不依赖于客户端的COOKIES。服务器通过在HTTP头中设置一个唯一标识(session_id)来跟踪用户状态。 ...
5. Google 为 Bigtable 设计的内部数据存储格式是 SSTable,它是一种高效的持久化数据结构。 6. 云计算分析处理最适合处理大数据,例如天气预报数据、科学计算数据和商业数据。耦合度高的数据可能不适合云计算,...
9-30 4 构造方法 对象的常用操作 9-30 5 面向对象的封装 继承 多态 9-30 6 面向对象的封装 继承 多态2 9-5 1.php xml编程①-xml基本介绍 xml元素 xml属性 9-5 2.php xml编程②-cdata 实体字符 处理指令 dtd快速入门 ...
9-30 4 构造方法 对象的常用操作 9-30 5 面向对象的封装 继承 多态 9-30 6 面向对象的封装 继承 多态2 9-5 1.php xml编程①-xml基本介绍 xml元素 xml属性 9-5 2.php xml编程②-cdata 实体字符 处理指令 dtd快速入门 ...
9-30 4 构造方法 对象的常用操作 9-30 5 面向对象的封装 继承 多态 9-30 6 面向对象的封装 继承 多态2 9-5 1.php xml编程①-xml基本介绍 xml元素 xml属性 9-5 2.php xml编程②-cdata 实体字符 处理指令 dtd快速入门 ...
9-30 4 构造方法 对象的常用操作 9-30 5 面向对象的封装 继承 多态 9-30 6 面向对象的封装 继承 多态2 9-5 1.php xml编程①-xml基本介绍 xml元素 xml属性 9-5 2.php xml编程②-cdata 实体字符 处理指令 dtd快速入门 ...
9-30 4 构造方法 对象的常用操作 9-30 5 面向对象的封装 继承 多态 9-30 6 面向对象的封装 继承 多态2 9-5 1.php xml编程①-xml基本介绍 xml元素 xml属性 9-5 2.php xml编程②-cdata 实体字符 处理指令 dtd快速入门 ...
- **配置索引**:通过 `index.yaml` 文件定义数据模型的索引结构。 - **开发服务器**:使用 `dev_appserver.py` 在本地模拟 GAE 服务器环境。 - **上传应用程序**:使用 `appcfg.py` 工具将应用部署到生产环境。 - *...
1. **源码阅读**:通过阅读`memcached-1.2.1-win32-src.zip`中的源代码,可以了解memcached的内部实现,包括数据结构、网络通信、并发控制等核心部分。 2. **二次开发**:理解源代码后,可以根据需求进行定制,或者...
- **Memcache的原理分析及使用**:比较Memcache和Redis的不同之处。 **7.9 高并发专题-数据库层面优化** - **分库分表的原理及规则讲解**:了解分库分表的策略。 - **数据库主备及高可用**:实现数据库的主备切换...