memcached服务器
memcached是高性能的分布式内存缓存服务器,通过缓存数据库查询结果,减少数据库访问次数,提高动态web应用的速度和可扩展性。为了提高性能,memcached把数据存储在内存中,重启memcached或操作系统会导致全部数据消失,当内存容量达到指定值后,会使用LRU算法自动删除不使用的(或者很少使用的)缓存。memcached本身是为缓存设计的服务器,因此并没有过多考虑数据的持久化问题。

memcached使用多路复用IO模型以支持高并发访问。memcached会为每个item设置一个过期时间,但不是到期就把item从内存中删除,而是访问item时如果到了有效期,才把item从内存中删除,当memcached使用内存数大于设置的最大内存使用数时,为了腾出内存空间来存放新的数据,memcached会启用LRU算法淘汰旧的数据项memcached多线程模型:主线程接受客户端连接,并把连接分配给工作线程处理,有工作线程处理客户端连接的请求。

1)官网http://libevent.org/ 下载最新源码,如:libevent-2.0.20-stable.tar.gz
2)解压到/usr/src目录 ,执行命令:sudo tar -zxvf libevent-2.0.20-stable.tar.gz -C /usr/src
3)进入解压以后的目录,用sudo方式执行命令:sudo ./configure --prefix=/usr/local/libevent ; make ; make install
1)下载
去官网 http://memcached.org/ 下最新源码,我用的是memcached-1.4.5.tar.gz
2)解压缩
#tar xzfv memcached-1.4.5.tar.gz
3)进入目录
#cd memcached-1.4.5
./configure --prefix=/local/memcached
make
make install
安装完成后,会在 /local/memcached 出现bin和share目录
./memcached -d -u nobody -m 512 127.0.0.1 -p 11211
现在可以正常启动memcached了:#./memcached -d -u nobody -m 512 127.0.0.1 -p 11211 到这里,看到memcached已经启动,说明安装成功。
启动参数说明:
-d 选项是启动一个守护进程,
-m 是分配给 Memcache使用的内存数量,单位是 MB,这里是512MB
-u 是运行 Memcache的用户,这里是nobody
-l 是监听的服务器 IP地址,这里127.0.0.1 表示本机服务器
-p 是设置 Memcache监听的端口,这里设置了 11211,最好是1024 以上的端口
-c 选项是最大运行的并发连接数,默认是 1024,这里设置了256 ,按照你服务器的负载量来设定
-P 是设置保存 Memcache的pid 文件
-vv 开启调试信息和错误输出
1)安装memcache PHP扩展
#wget http://pecl.php.net/get/memcache-2.2.4.tgz
#tar zxvf memcache-2.2.4.tgz
#cd memcache-2.2.4
2)找phpize
#whereis phpize 本机是/usr/bin/phpize
# /usr/bin/phpize
# ./configure --with-php-config=/usr/bin/php-config
# make
# make install
3)在/etc/php.ini文件添加一行:extension=memcache.so
4)重启httpd:#service httpd restart
5)确认:php里使用phpinfo()看到如下信息说明memcached扩展才算安装好!
相关操作
配置文件:/etc/sysconfig/memcached
chkconfig --level 2345 memcached on #设置开机启动memcached服务
service memcached start #启动memcached服务
telnet localhost 11211 #用telnet连接到memcached服务器,即可执行memcached客户端命令
stats #当前memcached服务器的运行状态,重要指标:
cmd_get 查询缓存次数
cmd_set 设置key=>value的次数,没找到就写缓存
get_hits 总命中数
get_misses总未命中数
add 添加一个数据到服务器
set 替换一个已经存在的数据
get 获得数据的值
delete 删除数据
相关工具:
1)memcached-tool #memcached perl管理工具
memcached-tool 127.0.0.1:11211
2)图像界面监控memcache.php
部署memcache.php
PHP调用memcached示例
php的memcache客户端应用程序扩展包含两组接口,一组是面向过程的接口,一组是面向对象的接口。PHP代码示例:
<?php
$memcache = new Memcache; //创建一个memcache对象
$memcache->connect('localhost', 11211) or die ("Could not connect" ); // 连接Memcached服务器
$memcache->set('key', 'test'); //设置一个变量到内存中,名称是key值是test
$get_value = $memcache ->get('key' ); // 从内存中取出key的值
echo $get_value;
?>
memcached服务器监控调优
1、MemAdmin:MemAdmin是一款可视化的Memcached管理控制台与监控工具,使用PHP开发,体积小,操作简单。主要功能包括服务器参数监控:STATS、SETTINGS、ITEMS、SLABS、SIZES实时刷新,服务器性能监控:GET、DELETE、INCR、DECR、CAS等常用操作命中率实时监控等
2、Twemperf(mcpery):一款memcached性能测试工具,可以模拟大并发set、get等操作。
使用实例:
创建1000个并发连接;建立速度为每秒1000个,每一个连接发送set请求10次(相当于迭代10次),这10次请求以每秒1000的速度下发;设置连接和响应的超时时间为5s,设置tcp连接的断开时间(默认不开启),发送存储数据的大小(默认是1个字节),我们设为1个字节(也就是存入到memcached的value的大小)。
mcperf --num-conns=1000 --conn-rate=1000 --num-calls=10 --call-rate=1000 --timeout=5 --linger=0 --sizes=d1
结果字段说明:

3、memcached调优方法
1)存储的数据越大,则随着并发数的上升memcached处理请求的速度下降越明显,因此,存储数据不宜过大,如果确实要存储较大数据,建议拆分成两个或更多key来存储。
2)集群部署提升的性能越明显(平均耗时小,吞吐量大)
3)memcached中key最大允许250个英文字符或27个中文字,超过这些最大值,则数据无法存储。另外官方文档指出,value最大允许存储1M数据,超过1M的数据无法存储,因此建议key不宜过大,value也不宜过大,如果value超过1M,建议存储到两个或多个key中。
4)memcache内存存储满数据之后,之后再存储的数据不会再消耗内存,最老的数据会被删除(LRU算法),memcached启动参数默认是开启LRU(近期最少使用算法)的。如果启动参数加上-M则不开启LRU算法,此时如果内存已满再存放数据则会报错。
FAQ:
memcache与memcached的有什么区别?
Memcache和Memcached是两个版本的扩展库,Memcache出现的较早,是一个原生版本,完全在php框架内开发的,支持的方法略微少点,而Memcached出现的较晚,比较先进,支持的方法多点,是建立在libmemcached的基础上。详见:http://www.cnblogs.com/wangtao_20/p/4057591.html
当使用多台memcached服务器时怎么确定一个数据应该保存到哪台服务器上?
memcached分布式方案:普通hash分布、一致性hash分布。
memcached服务器的更多相关文章
- 源码安装Memcached服务器及其2种PHP客户端
本文所用源码包皆为当时最新stable稳定版. 安装memcached服务器 先安装libevent, 最新版为2.0.21 tar -zxvf libevent-2.0.21-stable.tar. ...
- 为php安装memcached扩展连接memcached服务器
首先必须完成必要的软件安装,memcached是php连接memcached服务器的php扩展 以前有个叫memcache也是php连接memcached服务器的扩展 php的memcache和mem ...
- windows下安装Memcached服务器,PHP的memcache扩展
Memcahed 介绍:Memcahed是一个内存缓存服务器 (类似MySQL服务器) 作用:提高web的响应速度,例如缓存数据库查询结果 原理:把数据存到内存中 (提高速度的原因) 教程相关 系统: ...
- Memcached服务器UDP反射放大攻击
1.前言 2月28日,Memcache服务器被曝出存在UDP反射放大攻击漏洞.攻击者可利用这个漏洞来发起大规模的DDoS攻击,从而影响网络正常运行.漏洞的形成原因为Memcache 服务器UDP 协议 ...
- nginx+nodejs+mysql+memcached服务器后台架设centos6.5
需要的下面四个工具最好都采用yum安装,不要采用编译安装的方法,因为编译安装会导致某些依赖关系丢失. nginx 作为HTTP和反向代理,处理静态页面,动态服务交由nodejs服务. nodejs作为 ...
- PHP与Memcached服务器交互的分布式实现源码分析
转自: http://blog.csdn.net/hguisu/article/details/7353595 前段时间,因为一个项目的关系,研究了php通过调用memcache和memcached ...
- 安装memcached服务器和PHP中添加memcache拓展模块
Memcached是一个高性能的分布式内存对象缓存系统,用于动态web应用以减轻数据库的负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提拱动态 数据驱动网站的速度. memcached ...
- Memcached服务器上实现多个实例(约约问题排查)
约约测试服上出行一个问题,司机收车失败. (1)经查看代码是null指针异常. 针对,之前,同套代码发布到华威测试服,未出现该问题,遂认定不是代码问题. (2)打印异常信息,获取null值异常的收车司 ...
- memcached 缓存服务器
Memcached 缓存服务器 Memcached 是高性能的分布式内存缓存服务器. 一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态web应用的速度.提高可扩展性. 主要特点 ...
随机推荐
- 摄像头视频捕捉(简单通用--通过IsampleGrabberCB实现)
前言 DirectShow是微软公司提供的一套在Windows平台上进行流媒体处理的开发包,与DirectX开发包一起发布.DirectShow为多媒体流的捕捉和回放提供了强有力的支持.用Direct ...
- BZOJ 4582: [Usaco2016 Open]Diamond Collector
Descrirption 给你一个长度为 \(n\) 的序列,求将它分成两个序列后最多个数,每个序列最大值最小值不能超过 \(k\) Sol 二分+DP. 排一下序,找出以这个点结尾和开始的位置. 这 ...
- 探索 OpenStack 之(7):Neutron 深入探索之 Open vSwitch (OVS) + GRE 之 Neutron节点篇
0. 测试环境 硬件环境:还是使用四节点OpenStack部署环境,参见 http://www.cnblogs.com/sammyliu/p/4190843.html OpenStack配置: ten ...
- effective OC2.0 52阅读笔记(六 块与大中枢派发)
派发队列:dispatch_queue 操作队列:NSOperationQueue 组:dispathc_group_t 37 理解“块”这一概念 总结:块就是一个值,且自有其相关类型.块的强大之处 ...
- jetty 内嵌服务
pom.xml <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncodin ...
- 拉风的服务器监控工具,随时掌握服务器动态,AgileEAS.NET SOA 平台服务器监控工具集介绍
一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...
- mysql在linux下修改存储路径
通过下面几步即可修改路径,这里的路径都是测试的路径,一般默认安装路径在/var/lib/mysql下,真正配置按照真实路径配置. 1.修改/etc/sysconfig/selinux文件:#SELIN ...
- java调用sqlldr导入csv文件数据到临时表
package cn.com.file;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File; ...
- SPOJ HIGH Highways ——Matrix-Tree定理 高斯消元
[题目分析] Matrix-Tree定理+高斯消元 求矩阵行列式的值,就可以得到生成树的个数. 至于证明,可以去看Vflea King(炸树狂魔)的博客 [代码] #include <cmath ...
- WSDL项目----操作和请求
至于现在你只看服务相关的特性,让我们尝试更多的操作和相应的请求. 操作 每个基于WSDL服务公开的操作包括一个请求和响应消息格式(可选). soapUI服务中的动作显示为节点在项目导航器的服务下 在s ...