Memcached缓存,深入分析解读MySQL锁,解决幻读问题

本文详细解析了Memcached的内存管理机制,包括slab和chunk的概念,以及内存分配策略。同时,讨论了如何避免幻读问题,强调了在使用Memcached时,数据大小和分布均匀性对内存利用率的重要性。最后提到了分布式集群和高可用性方案,如Magent缓存代理模式。
摘要由CSDN通过智能技术生成

最近版本,增加了虚拟节点的设计,进一步提升了可用性。

memcached仅支持基础的key-value键值对类型数据存储

在memcached内存结构中有两个非常重要的概念:slab和chunk

图8 memcached内存结构图

slab是一个内存块,是memcached一次申请内存的最小单位

在启动memcached的时候一般会使用参数-m指定其可用内存,但并非在启动的那一刻所有的内存就全部分配,只有在需要的时候才会去申请,而且每次申请一定是一个slab

slab的大小固定为1M,一个slab由若干个大小相等的chunk组成

每个chunk中都保存了一个item结构体、一对key/value

虽然在同一个slab中chunk的大小相等的,但是在不同的slab中chunk的大小并不一定相等

在memcached中按照chunk的大小不同,可以把slab分为很多种类(class),默认情况下memcached把slab分为40类(class1~class40),在class 1中,chunk的大小为80字节,由于一个slab的大小是固定的1M,因此在class1中最多可以有13107个chunk(也就是这个slab能存最多13107个小于80字节的key-value数据)

memcached内存管理采取预分配、分组管理

  • 分组管理就是我们上面提到的slab class࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值