Memcached全面剖析
来源:互联网 发布:淘宝知识产权怎么处罚 编辑:程序博客网 时间:2024/05/17 06:11
一、Memcached的简介
1.memcached是什么
memcached是高性能的分布式内存缓存服务器。一般使用使用目的是,通过缓存数据查询结果,来减少数据库访问次数,以提高动态Web应用的速度,提高可扩展性!
2.memcached的特征
(1)协议简单
(2)基于libevent的事件处理
(3)内置内存存储方式
(4)memcached不互相通信的分布式
3.memcached的安装、启动
(1)安装
$ wget http://www.danga.com/memcached/dist/memcached?1.2.5.tar.gz
$ tar zxf memcached?1.2.5.tar.gz
$ cd memcached?1.2.5
$ ./configure
$ make
$ make install
(2)启动
$ /usr/local/bin/memcached p 11211 m 64m vv
这里使用的 memcached 启动选项的内容如下。
p :使用的 TCP 端口。默认为 11211
m :最大内存大小。默认为 64M
vv:用 very vrebose 模式启动,调试信息和错误输出到控制台
d :作为 daemon 在后台启动
二、Memcached的基础知识
1.保存数据
add : add key flag expiretime 字节长度
replace:replace key flag expiretime 字节长度
set: set key flag expiretime 字节长度
2.获取数据
获取一个键的值:get key
获取多个键的值:get key1 key2
3.删除数据
delete key
4.append(在当前值的后面追加)
append key flag expiretime 字节数
5.prepend(在当前值的前面添加)
prepend key flag expiretime 字节数
三、理解Memcached的内存结构
1.Slab Allocation机制:整理内存以便重复使用
Slab Allocator的基本原理是按照预先规定的大小,将分配的内存分割成特定长度的块,以完全解决内存碎片问题。
Slab Allocator分配的内存不会被释放,可以重复使用。
2.主要术语
Page:分配给Slab的内存空间,默认是1MB。分配给Slab之后根据slab的大小切分成chunk。
Chuck:用于缓存记录的内存空间。
Slab Class:特定大小的chunk的组。
3.Slab Allocator的缺点
由于它分配的是特定大小的内存,会造成内存的浪费;
4.使用Growth Factor进行调优
memcached 在启动时指定 Growth Factor 因子(通过?f 选项),就可以在某种程度上控制 slab 之间的差异。
默认值为 1.25。
5.查看memcached的内部状态
stats、stats slabs、stats items
6.查看slabs的使用状况
可通过memcached-tool脚本很方便的查看slab的使用状态;
四、Memcached的删除机制和发展方向
1.LRU:从缓存中有效删除数据的原理
LRU:Least Recently Used 最近最少使用的;
五、Memcached的分布式算法
1.memcached的分布式算法
memcached保存数据时,当key产地给客户端程序库后,客户端会根据相应的算法指定对应的服务器。然后再进行保存。
当get数据时,由于使用key保存,使用的算法相同,所以找到的服务器也是之前保存数据的那台服务器。从而实现分布式。
2、分布式算法
(1)余数算法
根据服务器台数的余数来进行分散!该算法的分散性非常优秀!只是当添加新的服务器时,缓存重组的代价比较大,余数就会发生变化,就无法获取与保存时相同的服务器了,从而影响命中率。
(2)散列算法
首先求出memcached服务器的hash值,并将其配置到0~2^32的圆上。然后用同样的方法求出存储数据的键的hash值,并映射到圆上。然后从数据映射到的位置开始顺时针查找,将数据保存到找到的第一个服务器上。如果超过2^32仍然找不到服务器,就会保存到第一台memcached服务器上。散列算法最大限度的抑制了key的重新分布。
六、Memcached的应用和兼容程序
1.通过daemontools启动
当出现memcached突然死掉的情况,可通过该工具进行自动启动!
上一篇:高性能MySQL(第三版)
下一篇:iptables防火墙简介
- 关于SSI
- IP Sec VPN与NAT破镜重圆
- JS模拟鼠标自动点击
- UT2.0正式版下载
- tomcat6.0配置(含配置视频下载...
- linux dhcp peizhi roc
- 关于Unix文件的软链接
- 求教这个命令什么意思,我是新...
- sed -e "/grep/d" 是什么意思...
- 谁能够帮我解决LINUX 2.6 10...
- memcached全面剖析
- memcached全面剖析
- memcached全面剖析--1
- memcached全面剖析
- 《memcached全面剖析》
- memcached全面剖析
- memcached全面剖析
- memcached全面剖析
- memcached全面剖析
- Memcached全面剖析
- memcached全面剖析-3.memcached的…
- Memcached全面剖析–总结篇
- memcached全面剖析–PDF总结篇
- memcached全面剖析-2.理解memcache…
- memcached全面剖析–2.理解memcached的内存存储
- memcached全面剖析–4. memcached的分布式算法
- memcached全面剖析–4. memcached的分布式算法
- memcached全面剖析–2.理解memcached的内存存储
- Android--合并2个Xml
- jenkins 配置安全策略admin没有Overall/Read权限
- linux目录结构详细介绍 【转】
- 高性能MySQL(第三版)
- Java线程:线程的同步-同步方法
- Memcached全面剖析
- hdu 1849 Rabbit and Grass(s-nim博弈)
- iptables防火墙简介
- android 友盟推送SDK和支付宝支付SDK冲突
- 8.旋转数组的最小数
- 深入浅出Oracle:DBA入门、进阶与诊断案例(读书笔记1)
- 通过WriteProcessMemory改写进程的内存
- 深入浅出Oracle:DBA入门、进阶与诊断案例(读书笔记2)
- Laravel中文件上传