memcached实战系列(六)理解Memcached的数据存储方式

简介: Memcached的数据存储方式被称为Slab Allocator,其基本方式是:1:先把内存分成很多个Slab,这个大小是预先规定好的,以解决内存碎片的问题。

Memcached的数据存储方式被称为Slab Allocator,其基本方式是:

1:先把内存分成很多个Slab,这个大小是预先规定好的,以解决内存碎片的问题。启动参数的时候配置进去的不懂得可以参考memcached启动参数配置章节。

分配给Slab的内存空间被称为Page,默认是1M。一个Slab下可以有多个Page。

2:然后把一个Page分成很多个chunk块,chunk块是用于缓存记录的空间。Chunk的

大小是先有一个基本值,然后根据增长因子来增大。每一个pagechunk是相等的空间大小。

3:slab class:内存区类别(48byte-1M),每个类别有一个slab classId,图左边的,类似索引方便管理记录。

4:Memcached里面保存着slab内空闲的chunk列表,当收到要保存的item的时候,它

会根据item的大小,去选择一个最合适的slab,然后找到空闲的chunk,把数据存放进去。

 

比如我们存放120字节的值,有个chunk值为100还有一个chunk130,存到100chunk是没有足够空间存储的,存储到130这个chunk是可以的,最近的原则存储。但是存储到130chunk里面,也有一个问题就是浪费了10字节内存。所以合理的分配空间也是很重要的。

 

启动的时候添加参数:-vv注意小写的不是大写的。

./memcached -d -m 10 -u root -l 0.0.0.0 -p 18887-c 256 -P /tmp/memcached.pid -vv

如下图所示:

 

上面的图也印证了前面说的原理。确实是这样分配的。


相关文章
|
6天前
|
存储 缓存 数据库
【赵渝强老师】Memcached的数据存储方式
Memcached 是一个高性能的分布式内存对象缓存系统,用于减轻数据库压力,支持高负载网站。它通过内存中的巨大 Hash 表存储各种数据,但不支持数据持久化。视频讲解和数据存储方式图示详见内容。
|
存储 Memcache
Memcached源码分析 - 数据存储(3)
Memcached源码分析 - 网络模型(1)Memcached源码分析 - 命令解析(2)Memcached源码分析 - 数据存储(3)Memcached源码分析 - 增删改查操作(4)Memcached源码分析 - 内存存储机制Slabs(5)Memcached源码分析 - LRU淘汰算法(6)Memcached源码分析 - 消息回应(7) 开篇  这篇文章的目的主要是为了讲清楚Memcached内部数据存储结构,以及基于该存储结构的增删改查操作过程。
1020 0
|
Memcache
Memcached基础及底层机制剖析(CentOS6.8实战)
1.1 Memcached入门 1.2 Memcached安装部署 libevent安装 wget https://github.
1135 0
|
JavaScript 关系型数据库 MySQL
《高性能Linux服务器构建实战》——3.4节通过UDFs实现Memcached与MySQL的自动更新
本节书摘来自华章社区《高性能Linux服务器构建实战》一书中的第3章,第3.4节通过UDFs实现Memcached与MySQL的自动更新,作者:高俊峰,更多章节内容可以访问云栖社区“华章社区”公众号查看
1203 0
|
监控 JavaScript Linux
《高性能Linux服务器构建实战》——3.3节Memcached的管理与性能监控
本节书摘来自华章社区《高性能Linux服务器构建实战》一书中的第3章,第3.3节Memcached的管理与性能监控,作者:高俊峰,更多章节内容可以访问云栖社区“华章社区”公众号查看
1229 0
|
存储 缓存 算法
《高性能Linux服务器构建实战》——3.2节剖析Memcached的工作原理
本节书摘来自华章社区《高性能Linux服务器构建实战》一书中的第3章,第3.2节剖析Memcached的工作原理,作者:高俊峰,更多章节内容可以访问云栖社区“华章社区”公众号查看
1426 0
|
Unix Linux
memcached实战系列(一)memcached安装
下载并安装Memcached服务器端 我用的是cenos6.5 64位系统。 libevent是个程序库,它将Linux的epoll、BSD类操作系统的kqueue等事件处理功能封装成统一的接口,具有很高的性能。
814 0