Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。
- Memcached特征
- memcached作为高速运行的分布式缓存服务器,具有以下的特点。
- 协议简单
- 基于libevent的事件处理
- 内置内存存储方式
- memcached不互相通信的分布式
- 存储方式
为了提高性能,memcached中保存的数据都存储在memcached内置的内存存储空间中。由于数据仅存在于内存中,因此重启memcached、重启操作系统会导致全部数据消失。另外,内容容量达到指定值之后,就基于LRU(Least Recently Used)算法自动删除不使用的缓存。memcached本身是为缓存而设计的服务器,因此并没有过多考虑数据的永久性问题。
?
? - 安装案例
- 使用2台CentOS7系统完成,一台Memcached服务器,一台基于LAMP架构进行的Memcache客户端
- 安装包脚本下载地址:请点击下载
主机名称 | IP | 主要软件 |
---|---|---|
Memcached服务器 | 192.168.86.131 | memcached-1.5.6.tar.gz、libevent-2.1.8-stable.tar.gz |
Memcache 客户端 | 192.168.86.128 | memcache-2.2.7.tgz 、httpd、mysql、php |
?
- Memcached服务器
# tar xf memcached-1.5.6.tar.gz -C /opt/ # tar xf libevent-2.1.8-stable.tar.gz -C /opt/ # yum install gcc gcc-c++ make -y # cd /opt/libevent-2.1.8-stable # ./configure --prefix=/usr/local/libevent # make && make install # cd /opt/memcached-1.5.6 # ./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent/ # make && make install # ln -s /usr/local/memcached/bin/* /usr/local/bin/ # memcached -d -m 32m -p 11211 -u root // 开启服务(-d守护进程 -m缓存大小32M -p端口11211) # netstat -anpt | grep memc //查看端口 11211/tcp端口 # systemctl stop firewalld.service # setenforce 0
?
- Memcached客户端
- 搭建LAMP架构:LAMP架构教程
- 下面测试数据库工作是否正常
# mysql -u root -p > CREATE DATABASE sky; > GRANT all ON sky.* TO ‘skyuser‘@‘%‘ IDENTIFIED BY ‘admin123‘; > flush privileges; # vi /usr/local/httpd/htdocs/index.php <?php $link=mysql_connect(‘192.168.86.128‘,‘skyuser‘,‘admin123‘); if($link) echo "<h1>Success!!</h1>"; else echo "Fail!!"; mysql_close(); ?>
?
? - 在网页测试“http://192.168.86.128/index.php”
- 显示Success 为正常
?
?
?
?
- 安装Memcached客户端
# yum install autoconf -y # tar xf memcache-2.2.7.tgz -C /opt/ # cd /opt/memcache-2.2.7 //使用PHP的phpize脚本生成配置脚本configure 再进行配置编译 # /usr/local/php5/bin/phpize # ./configure --enable-memcache --with-php-config=/usr/local/php5/bin/php-config # make && make install # /usr/local/php5/lib/php/extensions/no-debug-zts-20131226/ //记录此行下面用到 # vi /usr/local/php5/php.ini //搜索并修改下面一行,再新增一行 extension_dir = "/usr/local/php5/lib/php/extensions/no-debug-zts-20131226/" extension = memcache.so
- 客户端去检测服务端是否可以连接
- 编写测试页面,测试memcached工作是否正常
# vi /usr/local/httpd/htdocs/index.php <?php $memcache = new Memcache(); $memcache->connect(‘192.168.86.131‘,11211); $memcache->set(‘key‘,‘Memcache test Successfull!‘,0,60); $result = $memcache->get(‘key‘); unset($memcache); echo $result; ?> # service httpd restart
?
?
- 在浏览器输入网页
- http://192.168.86.128/index.php
?
?
- Memcached数据库操作与管理
- 安装使用telnet连接11211端口就可以对数据库进行操作和管理了
# yum install telnet -y # telnet 127.0.0.1 11211
- 新建数据
add username 0 0 7 //不进行压缩和序列化标识 数据过期时间为永不过期 标识号是7就需要输入7位数。 example //输入数据
- 获取数据
get username //获取数据 VALUE username 0 7 example gets username VALUE username 0 7 1 //最后一位是更新因子会自增1 example
- 更新数据
set username 0 0 10 //更新信息,若键名不存在,则自行添加 everything replace username 0 0 8 //更新信息,若键名不存在,则报错 12345678
- 检测更新
gets username VALUE username 0 8 4 12345678 cas username 0 0 7 4 //检查更新,更新因子相等则更新否则返回EXISTS lodging STORED
- 追加数据
append username 0 0 7 //键值后追加数据 example STORED prepend username 0 0 2 //键值前追加数据 un STORED
- 清除数据
delete username //清除指定的键值数据 flush_all //清除所有缓存数据 OK
- 查看服务器统计信息
stats //显示状态信息 stats items //返回所有键值对的统计信息 stats cachedump 1 0 //返回指定存储空间的键值对 stats slabs //显示各个slab的信息 stats sizes //输出所有item的大小和个数 stats reset //清空统计数据
- 退出
quit //退出
原文地址:http://blog.51cto.com/13630803/2149709
时间: 2024-09-30 06:43:56