memcache总结-一灯系列
原理:
内存页Pages分成相同的slab,默认是1M,然后slab在分成不同slab class,然后slab class
分解成chunk,chunk存储数据。其中slab 1M可以分成多slab class,然后每个slab class中的chunk内存片大小都一样。
所以这就限制了如果你要存储value 不要超过1M。
存储的时候,如果第一次存储80byte的文件,slab 分配一个slab class,然后slab class中分成多个chunk 每个都是80byte
如果第二次再来的80byte的value那么就存入到这个slab class中的任意一个chunk中,如果不是80byte那么,就会安装1.25倍往上乘
直到能容纳该文件的最接近的大小。
经验技巧:
stats
查看memcached状态的基本命令,通过这个命令可以看到如下信息:
STAT pid 22459 进程ID
STAT uptime 1027046 服务器运行秒数
STAT time 1273043062 服务器当前unix时间戳
STAT version 1.4.4 服务器版本
STAT pointer_size 64 操作系统字大小(这台服务器是64位的)
STAT rusage_user 0.040000 进程累计用户时间
STAT rusage_system 0.260000 进程累计系统时间
STAT curr_connections 10 当前打开连接数
STAT total_connections 82 曾打开的连接总数
STAT connection_structures 13 服务器分配的连接结构数
STAT cmd_get 54 执行get命令总数
STAT cmd_set 34 执行set命令总数
STAT cmd_flush 3 指向flush_all命令总数
STAT get_hits 9 get命中次数
STAT get_misses 45 get未命中次数
STAT delete_misses 5 delete未命中次数
STAT delete_hits 1 delete命中次数
STAT incr_misses 0 incr未命中次数
STAT incr_hits 0 incr命中次数
STAT decr_misses 0 decr未命中次数
STAT decr_hits 0 decr命中次数
STAT cas_misses 0 cas未命中次数
STAT cas_hits 0 cas命中次数
STAT cas_badval 0 使用擦拭次数
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 15785 读取字节总数
STAT bytes_written 15222 写入字节总数
STAT limit_maxbytes 1048576 分配的内存数(字节)
STAT accepting_conns 1 目前接受的链接数
STAT listen_disabled_num 0
STAT threads 4 线程数
STAT conn_yields 0
STAT bytes 0 存储item字节数
STAT curr_items 0 item个数
STAT total_items 34 item总数
STAT evictions 0 为获取空间删除item的总数
清单 8. 计算缓存命中率
现在,用 get_hits 的数值除以 cmd_gets。在本例中,您的命中率大约是 71%。
在理想情况下,您可能希望得到更高的百分比 — 比率越高越好。
查看统计数据并不时测量它们可以很好地判定缓存策略的效率。
很可能memcached内存不够用,导致新增一条新数据,就丢失一条老的。
设计的时候也需要动静分离,以提高命中率。
stats items
输出各个slab中的item信息。s
stats slabs
输出slab中更详细的item信息
stats sizes
输出所有item的大小和个数
stats cachedump <slab_id> <limit_num>
//有一个查看监控memcache的php页面memecache.php 可以监控memecahe的命中率
1.memcache server端安装配置
yum install gcc* make* php-devel zlib-devel
mkdir -p /application/memcache
# wget http://www.danga.com/memcached/dist/memcached-1.2.0.tar.gz
# wget http://www.monkey.org/~provos/libevent-1.2.tar.gz
2.先安装libevent:
tar zxvf libevent-1.2.tar.gz
cd libevent-1.2
./configure --prefix=/usr
make
make install
ln -s /usr/lib/libevent-1.2.so.1.0.3 /usr/lib64/libevent-1.2.so.1
3.测试libevent是否安装成功:
# ls -al /usr/lib | grep libevent
lrwxrwxrwx 1 root root 21 11?? 12 17:38 libevent-1.2.so.1 -> libevent-1.2.so.1.0.3
-rwxr-xr-x 1 root root 263546 11?? 12 17:38 libevent-1.2.so.1.0.3
-rw-r–r– 1 root root 454156 11?? 12 17:38 libevent.a
-rwxr-xr-x 1 root root 811 11?? 12 17:38 libevent.la
lrwxrwxrwx 1 root root 21 11?? 12 17:38 libevent.so -> libevent-1.2.so.1.0.3
4.安装memcached,同时需要安装中指定libevent的安装位置:
tar zxvf memcached-1.2.0.tar.gz
cd memcached-1.2.0
./configure --with-libevent=/usr
make
make install
如果中间出现报错,请仔细检查错误信息,按照错误信息来配置或者增加相应的库或者路径。
(注:安装的时候出现错误:
1 linux警告:检测到时钟错误。您的创建可能是不完整的
解决方法:
修改当前时间:
[root]#date –s ‘2010/11/5 8:01:00 ‘
将当前系统时间写入CMOS中去
#clock –w
)
安装完成后会把memcached放到 /usr/local/bin/memcached ,
5.测试是否成功安装memcached:
# ls -al /usr/local/bin/mem*
-rwxr-xr-x 1 root root 137986 11?? 12 17:39 /usr/local/bin/memcached
-rwxr-xr-x 1 root root 140179 11?? 12 17:39 /usr/local/bin/memcached-debug
安装Memcache的PHP扩展
1.在http://pecl.php.net/package/memcache 选择相应想要下载的memcache版本。
2.安装PHP的memcache扩展
wget http://pecl.php.net/get/memcache-2.2.1.tgz
tar vxzf memcache-2.2.1.tgz
cd memcache-2.2.1
/usr/local/php/bin/phpize
./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config --with-zlib-dir
make
make install
以上安装时候错误解决:
1 phpize没有找到
解决方法: centos是默认没有安装php-devel的
yum install php-devel
2 make: *** [memcache.lo] Error 1
没有安装zlib
yum install zlib-devel
3.上述安装完后会有类似这样的提示:
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-2007xxxx/
4.把php.ini中的extension_dir = “./”修改为
extension_dir = “/usr/local/php/lib/php/extensions/no-debug-non-zts-2007xxxx/”
5.添加一行来载入memcache扩展:extension=memcache.so
memcached的基本设置:
1.启动Memcache的服务器端:
# /usr/local/bin/memcached -d -m 10 -u root -l 192.168.0.200 -p 12000 -c 256 -P /tmp/memcached.pid
-d选项是启动一个守护进程,
-m是分配给Memcache使用的内存数量,单位是MB,我这里是10MB,
-u是运行Memcache的用户,我这里是root,
-l是监听的服务器IP地址,如果有多个地址的话,可以不指定ip不使用该参数 /usr/local/bin/memcached -p 11117 -u nobody -m 600m -d
-p是设置Memcache监听的端口,我这里设置了12000,最好是1024以上的端口,
-c选项是最大运行的并发连接数,默认是1024,我这里设置了256,按照你服务器的负载量来设定,
-P是设置保存Memcache的pid文件,我这里是保存在 /tmp/memcached.pid,
-M不使用LRU算法,该参数最好不要用
(注:
出现错误:/usr/local/bin/memcached: error while loading shared libraries: libevent-1.3.so.1: cannot open shared object file: No such file or directory
直接设置链接
#ln -s /usr/local/libevent/lib/libevent-1.3.so.1 /lib64/libevent-1.3.so.1
)
2.如果要结束Memcache进程,执行:
# kill `cat /tmp/memcached.pid`
也可以启动多个守护进程,不过端口不能重复。
3.重启apache,service httpd restart
Memcache环境测试:
运行下面的php文件,如果有输出This is a test!,就表示环境搭建成功。开始领略Memcache的魅力把!
<?php
$mem = new Memcache;
$mem->connect("192.168.0.200", 12000);
$mem->set('key', 'This is a test!', 0,60);
$val = $mem->get('key');
echo $val;
?>
或者使用shell
echo "stats"|nc localhost port
本文出自 “一灯” 博客,请务必保留此出处http://yidengdashi.blog.51cto.com/1125400/663540
相关推荐
memcache个人总结的资源。。。。。。。。。。。。。。。。。。。。。。。。memcache个人总结的资源。。。。。。。。。。。。。。。。。。。。。。。。memcache个人总结的资源。。。。。。。。。。。。。。。。。。。...
#### 五、总结 通过本文的介绍,您不仅了解了如何安装配置Memcache,还掌握了基本的操作方法。Memcache作为一种高效的缓存解决方案,在提高Web应用性能方面发挥着重要作用。希望本文能帮助您更好地理解和使用...
1、Redis和Memcache都是将数据存放在内存中,都是内存数据库。不过memcache还可用于缓存其他东西,例如图片、视频等等; 2、Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储; 3...
总结来说,Memcache是Web应用提升性能的重要工具,通过理解和掌握其核心原理和使用方法,我们可以更好地利用它来优化我们的系统,提高用户体验。同时,对于有兴趣的开发者,源码分析和工具使用将进一步加深对...
总结来说,安装php5.2.17的php_memcache.dll扩展需要下载正确版本的dll文件,修改php.ini,重启服务器,安装和配置Memcache服务,最后通过测试脚本验证安装是否成功。整个过程旨在优化网站性能,减轻数据库压力,...
总结,Windows下安装Memcache涉及下载安装包、配置服务、创建服务、设置参数以及在PHP环境中测试连接。虽然过程比在Unix/Linux环境下复杂,但通过以上步骤,你依然能在Windows上享受Memcache带来的高效缓存能力。
总结,安装和配置Windows 7上的Memcache涉及下载服务端和PHP扩展,设置服务,修改配置文件,以及测试连接。正确完成这些步骤后,你的PHP应用程序就可以充分利用Memcache的缓存能力,提高整体性能。
**Memcache实践总结** Memcache是一款高性能的分布式内存对象缓存系统,主要用于减轻数据库的负载,提高Web应用的响应速度。它将数据存储在内存中,以键值对的形式提供快速访问,尤其适用于读多写少的应用场景。...
总结来说,这个“memcache 万能”版本可能是开发者社区中的一种优化解决方案,旨在提高Memcache在各种环境下的兼容性和性能。通过使用php_memcache.dll,开发者可以在PHP应用中无缝集成和利用这个强大的内存缓存系统...
总结,"memcache-3.0.6.tgz" 提供了 PHP 对 Memcached 的扩展支持,允许开发者在 PHP 应用中利用 Memcached 的高速缓存能力,提升系统性能。正确安装和使用此扩展,可以显著改善应用程序的响应时间和资源利用率。
Memcache 是一个高性能的分布式...总结来说,Memcache扩展是PHP与Memcache缓存系统之间的桥梁,适用于优化网站性能,尤其适合处理大量并发请求的高流量网站。确保正确安装和配置该扩展,将有助于提升你的Web应用效率。
总结来说,Memcache是一个高效、轻量级的缓存系统,对于提高PHP应用性能具有重要作用。在PHP5.2.6版本的Windows环境下,正确配置和使用Memcache涉及下载安装服务、启用PHP扩展以及编写代码进行数据交互。掌握这些...
总结起来,`memcacheclient-2.0`通过修复关键Bug和性能优化,为开发者提供了一个更加可靠、高效的Memcached C++客户端。它的跨平台支持、丰富的API以及异步I/O模型,使其成为C++应用中使用Memcached的理想选择。对于...
总结来说,"MemCache Client端类库"是C++开发者用来与MemCache服务器交互的重要工具。对于VS环境下的开发,适应性和兼容性是关键问题。通过修改和优化,我们可以创建一个定制化的客户端,以满足特定项目的需求,提升...
### 总结 以上就是基于提供的文件信息所涉及的Memcache配置和使用的全部内容。通过这些步骤,你可以了解如何在PHP环境中使用Memcache进行数据缓存,以及如何管理和操作这些数据。Memcache作为一种高效的缓存解决...
总结来说,Memcache是一个强大的内存缓存系统,通过高效的内存管理和简单的分布式策略,能显著提升Web应用的响应速度。"memcache-2.2.6.tgz"压缩包提供了该版本的源代码,允许开发者自定义编译和部署。理解Memcache...
总结这些信息,我们可以了解到这是一套在Windows 64位环境下运行PHP 5.4版本时,用于集成Memcached缓存服务的必要组件。安装并配置这些文件,可以使得PHP应用能够有效地利用Memcached进行数据缓存,提升整体系统性能...
总结,`php_memcache.dll 5.4.12`是PHP 5.4.12版本与Memcache交互的关键组件,正确安装和使用该扩展可以有效提升网站性能。同时,与`memcached-client.php`和Memcache服务端结合,可以构建完整的缓存管理体系,为Web...
总结,Memcache是PHP开发中提高网站性能的重要工具,通过理解并熟练掌握其使用方法,可以有效地优化网站架构,降低服务器负载。学习和使用`Memcache-20151006.doc`和`Memcached 原理和使用详解.pdf`文档,将有助于...