Memcached简介
Memcached是一个免费开源的
、高性能的
、具有分布式内存对象
的缓存系统,它通过减少数据库负载加速动态Web应用。目前全世界很多用于都使用它来构建大负载网站或提高网站的响应速度。
Memcache是这个项目的名称,Memcached是服务器端的主程序文件名。
Memcached是一种内存缓存,把经常存取的对象或数据缓存在内存中,内存中缓存的这些数据通过API的方式被存取,数据就像一张大的HASH表,以Key-value对的方式存在。Memcached通过缓存经常被存取的对象或数据,来减轻数据库的压力,提高网站的响应速度,这样去构建速度更快地可扩展的Web应用。
Memcached的特征
- 协议简单
- 使用基于文本行的协议
- 能直接通过telnet在Memcached服务器上存取数据
- 基于libevent的事件处理
- 确保了服务器端的连接数增加时也能发挥很好地性能
内置的内存管理方式
- 重用过期数据的内存空间
注意:
Memcached是为缓存系统设计的,没有考虑数据的容灾问题,和机器的内存一样,重启机器后数据将会丢失。
- 互不通信的Memcached之间具有分布特征
- 每个Memcached服务器之间互相不通信,都是独立的存取数据,不共享任何信息,通过对客户端的设计,让Memcached具有分布式,能支持海量缓存和大规模应用。
Memcached的使用 - CentOS
安装
先安装libevent,然后再安装memcached,都是执行以下三个命令即可:
- ./configure
- make
- make install
启动 - 本示例版本: Version1.4.25
sudo /usr/local/memcached/bin/memcached -m 32m -p 11211 -d -u root -P /var/run/memcached.pid -c 256 -vv
参数说明:
* -m:最大内存大小。默认为64MB
* -p:使用的TCP端口。默认为11211
* -d:作为守护进程在后台运行
* -u:运行memcached的用户,默认不能由root用户启动,所以需要指定
* -P:设置保存Memcached的pid文件
* -c:最大运行的并发连接数,默认是1024,这个按需配置
* -vv:以very verbose模式启动,将调试信息和错误输出到控制台
连接测试
执行命令: telnet localhost 11211
返回:
读写Memcached
输入的命令序列:
1. set temp 0 0 10
2. temp_value - 说明:输入的key为temp存入的数据
到这里,已经把temp值写入到memcached了 - STORED是写入后返回的结果说明
3. get temp
4. quit - 退出连接
关闭Memcached
前面在启动时,使用了-P参数,这里关闭引用到了:
kill `cat /var/run/memcached.pid`
安装Memcache的PHP扩展
- 到http://pecl.php.net网站下载扩展包,本次使用memcached-2.0.0.tgz
- 执行命令: /usr/local/php/bin/php-config
- 执行命令: ./configure –enable-memcache –with-php-config=/usr/local/php/bin/php-config
- 提示找不到libmemcached,去下载libmemcached安装
wget https://launchpad.net/libmemcached/1.0/1.0.9/+download/libmemcached-1.0.9.tar.gz
- 安装:./configure –prefix=/usr/local/libmemcached –with-memcached
- 提示错误,找不到event, 执行命令: sudo yum install libevent-devel
- 重新执行./configure –prefix=/usr/local/libmemcached –with-memcached, make , make install即可
- 提示找不到libmemcached,去下载libmemcached安装
- 执行命令: ./configure –enable-memcached –with-php-config=/usr/local/php/bin/php-config –with-libmemcached-dir=/usr/local/libmemcached
- make && make install
- 完成后有如下输出:
- 修改php.ini文件,把php.ini中的extention_dir=”./”修改为:extensin_dir=”/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/”
- 未调试好支持php连接memcached