简介: Memcached是一款开源、高性能、分布式内存对象缓存系统,可应用各种需要缓存的场景,其主要目的是通过降低对Database的访问来加速web应用程序。它是一个基于内存的“键值对”存储,用于存储数据库调用、API调用或页面引用结果的直接数据,如字符串、对象等。
特性: Memcached是一款开发工具,它既不是一个代码加速器,也不是数据库中间件。其设计哲学思想主要反映在如下方面: 1. 简单key/value存储:服务器不关心数据本身的意义及结构,只要是可序列化数据即可。存储项由“键、过期时间、可选的标志及数据”四个部分组成; 2. 功能的实现一半依赖于客户端,一半基于服务器端:客户负责发送存储项至服务器端、从服务端获取数据以及无法连接至服务器时采用相应的动作;服务端负责接收、存储数据,并负责数据项的超时过期; 3. 各服务器间彼此无视:不在服务器间进行数据同步; 4. O(1)的执行效率,查找效率非常之高; 5. 清理超期数据:默认情况下,Memcached是一个LRU缓存,同时,它按事先预订的时长清理超期数据;但事实上,memcached不会删除任何已缓存数据,只是在其过期之后不再为客户所见;而且,memcached也不会真正按期限清理缓存,而仅是当get命令到达时检查其时长;
常见操作命令: Memcached提供了为数不多的几个命令来完成与服务器端的交互,这些命令基于memcached的协议实现。 存储类命令:set, add, replace, append, prepend 获取数据类命令:get, delete, incr/decr 统计类命令:stats, stats items, stats slabs, stats sizes 清理命令: flush_all
安装memcached(rpm包安装): 前提:已经搭建好lamp或者lnmp # yum install -y php php-devel httpd mysql mysql-server
1、yum安装memcached # yum groupinstall "Development Tools" "Server Platform Deveopment" -y 安装开发包组 # yum install -y memcached
2、启动memcached服务 # service memcached start
3、telnet简单测试 [iyunv@a ~]# telnet 127.0.0.1 11211 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. add testkey 0 20 1 缓存一个键testkey,序列0 缓存时间20S 1字节 x 值为x STORED get testkey 请求testkey VALUE testkey 0 1 x 值为x END get testkey 20秒后再次请求,就没有值了 END
4、为php安装memcache插件
1.安装memcache插件 #tar xf memcache-2.2.7.tgz #cd memcache-2.2.7 #phpize #./configure --with-php-config=/usr/bin/php-config # make && make install(安装完成会出现下方提示) Installing shared extensions: /usr/lib64/php/modules/
2.配置php支持memcache # vim /etc/php.ini extension = "/usr/lib64/php/modules/memcache.so" 添加此行 # service httpd restart
4、创建PHP页面测试 # vim /var/www/html/index.php
<?php $mem = new Memcache; $mem->connect("127.0.0.1", 11211) or die("Could not connect");
$version = $mem->getVersion(); echo "Server's version: ".$version."<br/>\n";
$mem->set('hellokey', 'Hello World', 0, 600) or die("Failed to save data at the memcached server"); echo "Store data in the cache (data will expire in 600 seconds)<br/>\n";
$get_result = $mem->get('hellokey'); echo "$get_result is from memcached server."; ?> 5、访问测试
|